Pandas CSV文件,中间偶尔有额外的列

2024-09-29 04:23:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理大量(数千)由其他人生成的~100k行csv文件。10个文件中有9个有8个列,而且一切正常。第10行大约10行将在第6列后面插入2个额外的列:(为了简单起见,假设所有行中的值都相同。)

A,B,C,D,E,F,G,H
A,B,C,D,E,F,G,H
A,B,C,D,E,F,Foo,Bar,G,H
A,B,C,D,E,F,G,H
A,B,C,D,E,F,Foo,Bar,G,H
A,B,C,D,E,F,G,H
A,B,C,D,E,F,G,H

我无法控制数据文件的生成,需要在我的端清理它们,但是我相信有额外列的行已经损坏了数据,所以我现在只想拒绝它们。我想一个简单的方法来处理这个问题,首先将我的数据加载到一个10列的数据帧中:

^{pr2}$

然后检查extra1或extra2在哪里为null,保留这些行,然后删除多余的行。在

data_df = data_df[pd.isnull(data_df['extra1']) & pd.isnull(data_df['extra2'])]
del data_df['extra1']
del data_df['extra2']

这似乎有点不太理想。有人知道怎么清理这个吗?在

谢谢


Tags: 文件csv数据方法dfdatafoobar
1条回答
网友
1楼 · 发布于 2024-09-29 04:23:38

如果您想删除错误的行,可以使用error_bad_lines=False(如果您希望它对此保持安静,warn_bad_lines = False):

>>> !cat unclean.csv
A,B,C,D,E,F,G,H
A,B,C,D,E,F,G,H
A,B,C,D,E,F,Foo,Bar,G,H
A,B,C,D,E,F,G,H
A,B,C,D,E,F,Foo,Bar,G,H
A,B,C,D,E,F,G,H
A,B,C,D,E,F,G,H
>>> df = pd.read_csv("unclean.csv", error_bad_lines=False, header=None)
Skipping line 3: expected 8 fields, saw 10
Skipping line 5: expected 8 fields, saw 10

>>> df
   0  1  2  3  4  5  6  7
0  A  B  C  D  E  F  G  H
1  A  B  C  D  E  F  G  H
2  A  B  C  D  E  F  G  H
3  A  B  C  D  E  F  G  H
4  A  B  C  D  E  F  G  H

相关问题 更多 >