Pandas正确地错误输出包含比csv中的标题更多的字段的行,但是它将NaN
添加到包含较小字段的行,即使没有尾随的,
指示空字段。
我的csv:
id,name,pin,city
1,abc,123,SJ
2,xyz,789
3,pqr,456,AL
4,qwe,345,
当我尝试通过熊猫阅读时:
>>> import pandas
>>> a = pandas.read_csv('test.csv', error_bad_lines=False)
>>> a
id name pin city
0 1 abc 123 SJ
1 2 xyz 789 NaN
2 3 pqr 456 AL
3 4 qwe 345 NaN
>>>
这里使用城市值中的NaN
读取第4行,这是正确的,因为最后一个,
表示空字段。但第2行应该错误输出/不读入数据帧。有没有办法实现这个目标?
您可以预处理查找行长度不相等的值,并传递给skiprows
中的参数read_csv
:
out = []
with open('test.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
head = next(reader)
for i, row in enumerate(reader):
if len(row) != len(head):
out.append(i)
print (out)
[1]
df = pd.read_csv('test.csv', skiprows=np.array(out) + 1)
print(df)
id name pin city
0 1 abc 123 SJ
1 3 pqr 456 AL
2 4 qwe 345 NaN