使用pandas更新csv中的数据

在工作中,获取了c_dataframe这样一个DataFrame类型的数据,样式如下:

代码    最新价

111     10.0

222     20.0

手头还有一个csv,里面的内容如下:

代码   最低价  备注

111     12.0      张三

222     15.0     李四

333     18.0     王五

目的:使用 c_dataframe中的数据更新csv中的数据。

代码如下:

def update_csv(c_dataframe):
    # c_dataframe是一个DataFrame类型的数据

    # 读取CSV文件到DataFrame
    csv_file_path = 'example.csv'
    original_df = pd.read_csv(csv_file_path, encoding='gbk')
    original_df['代码'] = original_df['代码'].astype(str)

    # 通过merge函数将当前数据与原始数据合并,基于'代码'字段进行匹配
    # 使用how='left'确保保留原始数据中的所有记录,即使某些记录在current_df中不存在
    merged_df = pd.merge(original_df, c_dataframe[['代码', '最新价']], on='代码', how='left')

    # 更新'最低价'字段为'最新价'(仅当'最新价'存在时)
    # 使用combine_first()方法保留原始'最低价'中的非空值,当'最新价'为空时不进行更新
    merged_df['最低价'] = merged_df['最新价'].combine_first(merged_df['最低价'])

    # 如果不需要保留'最新价'列,可以将其删除
    merged_df = merged_df.drop(columns=['最新价'])
    merged_df.to_csv(csv_file_path, index=False, encoding='gbk')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值