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

如何用Pandas读取TXT文件生成DataFrame并跳过无关行(解决解析错误)

UWYO探空TXT文件转DataFrame解决方案

报错原因

ParserError是因为TXT文件前半段的站点元数据字段数和观测数据不一致,直接用pd.read_csv读取时,pandas会默认按第一行的字段数解析所有行,导致字段不匹配报错。

核心思路

先定位每个TXT中以pressure开头的观测数据表头行,以此为分界,跳过前面的无关内容,只读取表头行之后的观测数据。

完整实现代码

import pandas as pd
import glob

dfs = []

# 遍历所有本地txt文件
for fname in glob.glob('*.txt'):
    # 打开文件定位观测数据的表头行
    with open(fname, 'r') as f:
        lines = f.readlines()
        header_idx = None
        # 匹配表头行(兼容大小写差异)
        for idx, line in enumerate(lines):
            if line.strip().lower().startswith('pressure'):
                header_idx = idx
                break
        if not header_idx:
            print(f"{fname} 未找到观测数据表头,跳过处理")
            continue
    
    # 读取观测数据部分
    df = pd.read_csv(
        fname,
        delimiter='\s+',
        header=header_idx,  # 指定找到的行作为数据列名
        na_values=['-9999', '9999'],  # 转换UWYO格式的缺失值为NaN
        skipinitialspace=True
    )
    # 添加文件名字段,方便溯源数据来源
    df['source_file'] = fname
    dfs.append(df)

# 合并所有文件的观测数据
final_df = pd.concat(dfs, ignore_index=True)

关键细节说明

  • 大小写兼容:用lower()统一判断表头行,避免因文件中表头是Pressure(首字母大写)而漏判
  • 缺失值处理:UWYO探空数据通常用-9999或9999标记缺失,通过na_values参数自动转为pandas可识别的NaN
  • 数据溯源:添加source_file列,方便后续排查单文件的数据问题

内容的提问来源于stack exchange,提问作者The Emerging Star

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:10:41