如何用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
相关产品推荐
相关产品推荐

