如何为大熊猫中的特定值过滤数据框?

时间:2019-07-01 09:18:45

标签: python pandas optimization

我有一个数据框。 2列的值:

A  B
1  3
4  2
2  5
6  3
-  -
4  4

A  B
1  3
4  2
2  5
6  3
0  0
4  4

有时候我的差距为零,有时是-

我写了一个脚本来处理这些文件。它的一部分是删除带有间隙的行。无论是0还是-。 我写了这样的东西:

df = df[df[0] != '-'] 
df = df[df[1] != '-'] 
df = df[df[0] != '0'] 
df = df[df[1] != '0'] 

我得到了一个没有0和-的df。 但是我认为这不是最好的代码。如果我很了解,我会浪费内存来创建df的副本。

我应该如何编写这样的代码(在此示例中)以正确正确地进行操作?有人可以分享建议吗?

1 个答案:

答案 0 :(得分:3)

您可以使用|操作符创建2个布尔掩码,该操作符使用df.eq()和{{3}检查行中的所有列是-还是0 }在axis=1上:

df[~(df.eq('-').all(1)|df.eq(0).all(1))]

   A  B
0  1  3
1  4  2
2  2  5
3  6  3
5  4  4