本文介绍如何使用 pandas 的 `skiprows` 和 `header` 参数,自动跳过 txt 文件中前导的非数值行(如标题、单位、说明等),精准读取第四行起的数值数据,同时保留原始文本信息用于图表标注。
在实际数据处理中,实验仪器导出的 .txt 文件常包含多行元信息(如标题、列名、单位等),而真正可用于绘图的数值数据通常从第 4 行(即索引为 3 的行)开始。手动删除前导行不仅低效,还易出错且不可复现。幸运的是,pandas.read_csv() 提供了灵活的参数支持,无需预处理文件即可直接定位有效数据。
✅ 正确读取数据:跳过前 4 行 + 禁用自动表头识别
原始文件结构如下(共 4 行元数据 + N 行数值):
"Power Curve Thermocouple TC_MS" "Power Curve Thermocouple TC_FS" "AUTime" "AUPercent" "AUTime" "AUPercent" "s" "%" "s" "%" 2190.89224179698 41.447689056396484 2190.89224179698 25.676259994506836 ...
只需两处关键修改,即可让代码自动适配:
filename = "curve_htc6000_2.txt" setTemp = 200 # 跳过前4行(0-indexed,即跳过第0、1、2、3行),且不将任何行设为列名 df = pd.read_csv(filename, delim_whitespace=True, skiprows=4, header=None) Time1 = df.iloc[:, 0] Power1 = df.iloc[:, 1] Time2 = df.iloc[:, 2] Power2 = df.iloc[:, 3]
? skiprows=4 表示跳过文件开头的 4 行;header=None 强制 pandas 不将任意一行作为列名(否则第 4 行会被误认为列名,导致 iloc[:,0] 取到错误列)。二者配合,确保 df 是一个纯数值的、按位置索引的 DataFrame。
? 进阶技巧:读取并复用原始标题行(可选)
若需提取第一行标题(如 “Power Curve Thermocouple TC_MS”)用于图例或标题,可分两步读取: