You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas分块读取大CSV分类写入时新内容覆盖旧内容如何解决

问题根源

你的代码出现覆盖问题的核心原因是pandas.DataFrame.to_csv的参数传参位置错误:
你想指定追加写入模式mode='a',但按pandas官方的参数顺序,to_csv的第二个参数是分隔符sep,mode属于靠后的位置参数。你直接按位置把'a'作为第二个参数传入,实际生效的是把分隔符设为了字符a,写入模式还是默认的覆盖模式mode='w',因此每处理一个新数据块都会清空之前的文件内容重新写入。

修复方案

推荐使用关键字参数指定mode,避免位置传参的混淆,同时可以增加表头写入判断,避免最终文件出现重复表头:

import pandas as pd
import os

def process_chunk(data):
    target_col = 'location_country' 
    target_val = 'united states'
    filtered = data[data[target_col] == target_val]
    save_path = f'G:\\1\\{target_val}.csv'
    # 判断文件是否存在,不存在就写表头,存在就跳过表头只写数据
    file_exists = os.path.exists(save_path)
    filtered.to_csv(save_path, mode='a', sep=',', index=False, header=not file_exists)

# 分块读取大文件
chunk_iterator = pd.read_csv('G:\\gz\\4.csv', sep=',', chunksize=1000000)
for df in chunk_iterator:
    process_chunk(df)

额外说明

  • 关键字传参的写法不受参数顺序影响,后续调整参数时也不容易出错,更推荐使用
  • 如果你不需要处理重复表头的问题,可以直接把原来的'a'改成mode='a'即可解决覆盖问题,无需额外判断文件是否存在

内容的提问来源于stack exchange,提问作者jeri teri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:39:00