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

如何读取列数可变的分块CSV文件并生成组名对应DataFrame的字典

问题原因

pandas的read_csv默认会以文件第一行的列数作为全局列数解析所有行,你的CSV文件每组列数不固定,导致后续行的字段数和第一行不匹配,抛出解析错误。

适配读取方案

核心思路是先按行拆分分组,每组单独解析为DataFrame:

实现代码

import pandas as pd
import io

# 读取文件所有行,自动过滤空行
with open('test.batch.csv', 'r', encoding='utf-8') as f:
    all_lines = [line.rstrip('\n') for line in f if line.strip()]

grouped_df_dict = {}

# 按每5行一组遍历处理
for idx in range(0, len(all_lines), 5):
    group_block = all_lines[idx: idx+5]
    # 取组名
    group_key = group_block[0]
    # 拼接该组的CSV内容(表头+3行业务数据)
    group_csv = '\n'.join(group_block[1:])
    # 单独解析该组为DataFrame,设置第一列为索引(M1/M2/M3列)
    current_df = pd.read_csv(io.StringIO(group_csv), index_col=0)
    # 处理重名组:如果存在相同组名,存储为列表;不需要保留历史可直接赋值覆盖
    if group_key in grouped_df_dict:
        grouped_df_dict[group_key].append(current_df)
    else:
        grouped_df_dict[group_key] = [current_df]

效果验证

比如要获取第一个K1组的数据,直接访问grouped_df_dict['K1'][0]即可得到对应DataFrame:

Value
M10
M210
M33

可选调整项

  • 如果不需要保留重名组,直接修改赋值逻辑为grouped_df_dict[group_key] = current_df即可
  • 如果不需要把M1/M2/M3设为索引,删除index_col=0参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:15:03