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

使用pandas读取内含多个独立CSV结构的单文件报错如何解决

错误原因

  1. 直接使用pd.read_csv读取全文件报错是因为文件内包含多个字段数不同的CSV结构,pandas默认按第一个表头的字段数解析后续内容,字段不匹配就会抛出错误。
  2. 你写的skiprows=[1,9:]存在语法错误:Python列表中不能直接嵌入切片作为元素,所以无法运行。

解决方法

我们可以先逐行读取文件拆分出5个独立CSV块,再分别解析,具体实现代码如下:

import pandas as pd
from io import StringIO

# 读取文件全部行,过滤空行
with open("./PA_Logs/summary.csv", "r", encoding="utf-8") as f:
    all_lines = [line.rstrip("\n") for line in f if line.strip()]

# 去除末尾3行无关统计内容
all_lines = all_lines[:-3]

# 定位底部4个分段的起始位置
block_markers = ["Read 1", "Read 2 (I)", "Read 3 (I)", "Read 4"]
block_start_idx = [idx for idx, line in enumerate(all_lines) if line in block_markers]

# -------------------- 读取5个独立数据集 --------------------
# 1. 顶部汇总分段
summary_df = pd.read_csv(
    StringIO("\n".join(all_lines[:block_start_idx[0]])),
    skiprows=1  # 跳过第一行的RUN_ID_HERE
)

# 2. 底部4个Read分段,存储在字典中,可通过key直接调取
read_dfs = {}
for i, marker in enumerate(block_markers):
    # 确定当前分段的结束位置
    end_pos = block_start_idx[i+1] if i < len(block_markers)-1 else len(all_lines)
    # 跳过分段首行的标记行,剩下内容为标准CSV格式
    current_block = all_lines[block_start_idx[i]+1 : end_pos]
    read_dfs[marker] = pd.read_csv(StringIO("\n".join(current_block)))

结果说明

  • 顶部汇总数据集:summary_df
  • 底部4个分段数据集:read_dfs["Read 1"]、read_dfs["Read 2 (I)"]、read_dfs["Read 3 (I)"]、read_dfs["Read 4"]

如果你仅需要读取第一个表格,可直接使用nrows参数限制读取行数,无需处理全文件:

data = pd.read_csv("./PA_Logs/summary.csv", skiprows=1, nrows=5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:24:10