首页 > 解决方案 > 导入 pandas df 时删除/忽略 .dat 的前两行

问题描述

我有以下代码,我试图在其中加载一个用逗号分隔数据的 df

df = pd.read_csv(r'C:\Users\jmwil\Downloads\data.dat',
            header=None, sep=',', engine='python')

但是它会产生以下错误pandas.errors.ParserError: Expected 9 fields in line 3, saw 22,因为数据有点像这样(下)本质上工作表中的前两行不属于表。我想找到一个解决方案,不需要我进入文件并删除我真正感兴趣的数据表上方的两行,因为有数千个。如何在没有前两行的情况下加载或让 python 删除 .dat 文件的前两行?我不能给出确切的数据,但我试图复制下面的问题。

xyz 2010, 209, 145
xyz 2010, 209, 145
date, amount, type, location, count, etc...., 22nd column

输入

1,2,3
4,5,6
A,B,C,D,E,F,H
1,1,1,1,1,1,1
2,2,2,2,2,2,2
3,3,3,3,3,3,3

df中的所需输出

A,B,C,D,E,F,H
1,1,1,1,1,1,1
2,2,2,2,2,2,2
3,3,3,3,3,3,3

标签: pythonpandas

解决方案


尽管@Quang Hong 推荐了skirows=2,但我仍然想发布这个答案,因为我认为它更有用一些。Pandas.read_csv 有选项 error_bad_lines,它基本上会跳过导致错误的每一行。像这样使用它:

df = pd.read_csv(r'C:\Users\jmwil\Downloads\data.dat',
        header=None, sep=',', engine='python', error_bad_lines=False)

这适用于 .csv 文件,所以我想它也应该适用于 .dat 文件(如果我错了,请纠正我)


推荐阅读