Pandas会正确地将包含错误字段的行比csv中的标题错误,但是即使没有尾随的NaN
指示空白字段,它也会向包含较少字段的行中添加,
。 / p>
我的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
>>>
此处读取的第4行的城市值为NaN
,这是正确的,因为最后一个,
表示为空字段。但是第2行应该错误输出/不读入数据帧。有什么办法做到这一点?
答案 0 :(得分:1)
您可以预处理查找长度不相等的行的值,并将其传递给read_csv
中的参数skiprows
:
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