我有一个数据框。 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 的副本。
我应该如何编写这样的代码(在这个例子中)才能正确且良好地完成它?有人可以分享建议吗?
最佳答案
您可以使用 |
运算符创建 2 个 bool 掩码,该运算符使用 df.eq()
检查一行中的所有列是否为 -
或 0
以及 axis=1
上的 df.all()
:
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
关于python - 如何过滤 pandas 中特定值的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56833019/