这是我的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
它没有删除任何我不知道问题出在哪里的东西 请帮忙!
答案 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
。