如何动态定位 CSV 文件中数据起始行并用 Pandas 正确读取-Python教程

本文介绍一种高效、无需预扫描文件的 python 方法:通过逐行遍历 csv 文件流,精准定位以特定列名(如 `[deal type]`)开头的首行,并将后续内容交由 pandas.read_csv 直接解析,避免重复读取或硬编码跳过行数。

在日常数据处理中,我们常遇到结构不规范的 CSV 文件——真正有效的表格数据并非从第一行开始,且头部“噪声”行数每日变动。例如,某日 CSV 文件前 15 行可能是报告标题、元信息、空行或分隔符,而实际数据表头始终以 [Deal Type] 开头(该字符串位于首列,且带方括号)。此时,skiprows=12 这类静态参数会失效,而先 open().readlines() 全量加载再找索引又浪费内存(尤其大文件)。

推荐做法是利用文件对象的迭代特性与 pandas 的流式兼容能力:打开文件后,逐行读取直至命中目标表头行;此时文件指针已自动停留在该行之后,直接将该文件对象传给 pd.read_csv() 即可——pandas 会从当前指针位置开始解析,天然支持“跳过前导段落”。

以下是完整可运行示例(使用 io.StringIO 模拟文件,生产环境替换为真实路径):

import pandas as pd
import io

# 示例数据(模拟真实CSV文件内容)
raw_content = """Counterparty Name
ID Number

.
.

Asset
USD.HO
USD.LCO
USD.RB

Cpty:
Product:

[Deal Type],[Amount],[Currency]
D001,125000.00,USD
D002,87600.50,EUR
"""

# 关键逻辑:定位表头行并移交文件流给pandas
with io.StringIO(raw_content) as f:
    # 逐行扫描,找到以'[Deal Type]'开头的行(注意:需匹配完整前缀)
    for line in f:
        if line.strip().startswith('[Deal Type]'):
            break
    # 此时f的指针已在表头行之后,read_csv自动从此处读取
    df = pd.read_csv(f, skipinitialspace=True)  # skipinitialspace处理空格分隔符干扰

print(df)

输出:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » 如何动态定位 CSV 文件中数据起始行并用 Pandas 正确读取-Python教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4001925+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4001926+
  • 本周更新: 0+
  • 最后更新: 2026-03-16