熊猫-如何删除包含少于标题的字段的行

时间:2019-04-12 13:10:55

标签: python pandas csv

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行应该错误输出/不读入数据帧。有什么办法做到这一点?

1 个答案:

答案 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