求助:如何正确配置参数用Pandas加载.dat数据文件?
Pandas加载.dat数据文件的正确配置方案
问题根源
你的.dat文件包含大量注释行(以#开头)、一行数据表头(#L开头)和实际数据行,当前代码未过滤注释行、未指定正确表头,导致加载失败。
两种可行解决方案
方案一:直接用read_csv参数配置
通过硬编码行数快速加载(适合固定格式的文件):
import pandas as pd df = pd.read_csv( '../pythonzzyy/aa.dat', engine='python', delim_whitespace=True, # 空格分隔数据 skiprows=range(23), # 跳过前23行注释 header=0, # 用第24行(原#L行)作为表头 skipfooter=1 # 跳过最后一行结束注释 ) print(df)
方案二:动态筛选数据(适合格式可能变化的文件)
先读取所有行,筛选出表头和数据部分,再构建DataFrame:
import pandas as pd # 读取所有非空行 with open('../pythonzzyy/aa.dat', 'r') as f: lines = [line.strip() for line in f if line.strip()] # 提取表头(去掉#L前缀) header = next(line.split()[1:] for line in lines if line.startswith('#L')) # 定位数据行范围 header_pos = lines.index(f'#L {" ".join(header)}') end_pos = lines.index('#C Acquisition ended at Thu Jul 6 20:21:52 2023') data_rows = [line.split() for line in lines[header_pos+1:end_pos]] # 构建DataFrame并转换数值类型 df = pd.DataFrame(data_rows, columns=header).apply(pd.to_numeric) print(df)
关键参数说明
delim_whitespace=True:匹配任意数量的空格作为分隔符,适配文件的空格分隔格式skiprows/skipfooter:精准跳过无关的注释行header=0:指定读取到的第一行作为列名
内容的提问来源于stack exchange,提问作者liuchzzyy
相关产品推荐
相关产品推荐

