如何迭代到熊猫数据框列并删除特定行?

时间:2019-07-10 15:16:36

标签: python pandas

这是我的csv文件:

A  B  C  D
0  1  5  5
1  0  3  0
0  0  0  0
2  1  3  4 

如果要查找0,我要检查B列删除所有行,因此这是我需要的输出:

A  B  C  D
0  1  5  5
2  1  3  4

我尝试了以下代码:

import pandas as pd
df=pd.read_csv('Book1.csv', sep=',', error_bad_lines=False, dtype='unicode')
for index, row in df.iterrows():
    if row['B'] == 0:
        df.drop(row,index=False)
df.to_csv('hello.csv')

它为我回报:

   A  B  C  D
0  0  1  5  5
1  1  0  3  0
2  0  0  0  0
3  2  1  3  4

它没有删除任何我不知道问题出在哪里的东西 请帮忙!

1 个答案:

答案 0 :(得分:2)

您可以检查B中的哪些行不等于1,然后执行boolean indexing,结果为:

df[df.B.ne(0)]

   A  B  C  D
0  0  1  5  5
3  2  1  3  4

请注意,在您的方法中,为了删除给定的行,您需要指定索引,因此您应该执行以下操作:

for index, row in df.iterrows():
    if row['B'] == 0:
        df.drop(index, inplace=True)
df.to_csv('hello.csv')

也不要忘记删除一行后重新分配结果。可以将inplace设置为True或重新分配回df