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

如何跳过CSV已迭代行?分两次写入分段CSV数据遇阻求助

原代码的问题

  • 每次循环都重新读取原文件的前50行,没有跳过已处理的内容,第二次循环还是读的前50条,不是后续的记录。
  • 写入newFile.csv时默认用覆盖模式(mode='w'),第二次循环会直接覆盖第一次的内容,就算读对了行也没用。
  • newData = newData.iloc[50:]完全无效,下一次循环会重新给newData赋值,这个修改不会影响后续读取操作。

修复方案

方案一:分批次读取原文件(适合大文件)

如果原文件体积大,不想一次性加载到内存,可以用skiprows控制每次读取的起始位置,搭配追加模式写入:

import pandas as pd

for i in range(2):
    skip_count = i * 50
    # 第一次读取不跳行,正常识别表头;第二次跳前50行,读取时不把第一行当表头
    chunk = pd.read_csv(
        'oldFile.csv',
        skiprows=skip_count,
        nrows=50,
        header=None if skip_count != 0 else 0
    )
    # 第一次用覆盖模式写表头,第二次用追加模式不重复写表头
    chunk.to_csv(
        'newFile.csv',
        index=False,
        mode='a' if i != 0 else 'w',
        header=False if i != 0 else True
    )

方案二:一次性读取后分块写入(适合小文件)

如果文件不大,直接一次性读入内存再切片写入更简单:

import pandas as pd

# 一次性读取所有数据
all_data = pd.read_csv('oldFile.csv')

for i in range(2):
    start_idx = i * 50
    end_idx = start_idx + 50
    # 截取对应区间的行
    chunk = all_data.iloc[start_idx:end_idx]
    # 控制写入模式和表头
    chunk.to_csv(
        'newFile.csv',
        index=False,
        mode='a' if i != 0 else 'w',
        header=False if i != 0 else True
    )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:51:41