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

拆分CSV文件为两份且均保留表头时第二个文件缺失表头如何修复

CSV拆分第二个文件缺失表头的修复方案

问题原因

你当前的代码存在两个核心问题导致第二个文件缺失正确表头:

  • 处理非第一块数据时,skiprows = i 会跳过原文件的表头行,pandas默认会将读取到的第一行数据识别为表头,既丢失了原表头,还会损失一行有效数据
  • 计算总行数时把表头行也计入统计,会导致最后一块的读取边界出现偏差,可能读出空内容

修复后的代码

import pandas as pd

in_csv = 'Master_file.csv'
# 提前读取原文件的表头,后续所有块统一复用
headers = pd.read_csv(in_csv, nrows=0).columns.tolist()
# 单文件存放的数据行数,可按需调整
rowsize = 600000

# 计算总数据行数:原文件总行数减去表头占的1行
with open(in_csv, 'r', encoding='utf-8') as f:
    total_data_lines = sum(1 for _ in f) - 1

# 按块拆分,chunk_idx从1开始计数,方便命名输出文件
for chunk_idx, start_row in enumerate(range(0, total_data_lines, rowsize), start=1):
    if start_row == 0:
        # 第一块直接读取,自动识别表头
        df = pd.read_csv(in_csv, nrows=rowsize)
    else:
        # 后续块跳过表头+已经读取过的所有行,关闭自动识别表头
        df = pd.read_csv(in_csv, skiprows=start_row + 1, nrows=rowsize, header=None)
        # 手动给数据加上原表头
        df.columns = headers
    
    out_csv = f'File_Number{chunk_idx}.csv'
    # 直接写入即可,无需追加模式,每个文件仅写入一次
    df.to_csv(out_csv, index=False, header=True)

额外优化点

  • 输出文件名改为按1、2、3序列命名,比用起始行号命名更直观
  • 去掉了不必要的追加写入模式和chunksize参数,写入效率更高
  • 提前单独读取表头,避免多次重复读取文件头的额外开销

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:27:05