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

从混合CSV文件提取Pandas DataFrame的技术问题求助

解决CSV动态起始行加载问题

你的核心问题是直接读取CSV时,前面无关行的列数不一致导致解析报错,而且目标起始行不固定,无法提前指定skiprows。正确的思路是先定位到目标表头行(含'ID'的行),再从该行开始加载数据。

步骤1:定位目标起始行索引

先逐行读取文件,找到包含'ID'的那一行的位置,这一步不会触发解析错误,因为只是按文本行读取:

# 读取所有行并定位表头行
with open('abc.csv', 'r') as file:
    all_lines = file.readlines()

start_row = None
for idx, line in enumerate(all_lines):
    # 检查该行是否包含目标表头标识'ID'
    if 'ID' in line.strip().split():
        start_row = idx
        break

步骤2:从目标行开始加载DataFrame

找到起始行后,用pandas.read_csv跳过前面的行,同时指定正确的分隔符(根据你的示例数据是多空格分隔,所以用sep='\s+'):

import pandas as pd

if start_row is not None:
    # skiprows跳过前面的无关行,header=0表示将起始行作为表头
    df = pd.read_csv(
        'abc.csv',
        skiprows=start_row,
        header=0,
        sep='\s+'  # 如果你的实际CSV是逗号分隔,可删除此参数用默认值
    )
    print(df)
else:
    print("未找到包含'ID'的表头行")

为什么你的原代码无法运行?

你直接用pd.read_csv('abc.csv')时,pandas会默认用第一行的列数来解析后续所有行,而前面的无关行列数和目标数据列数不一致,直接触发ParserError,根本无法生成DataFrame,后续的循环自然无法执行。

额外说明

  • 如果你的CSV是逗号分隔而非空格,只需删除sep='\s+'参数,pandas默认会处理逗号分隔。
  • 如果'ID'可能出现在其他无关行中,可以优化判断逻辑(比如检查该行是否包含所有预期表头字段,如'FN'、'LN'等),避免误判。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:51:02