python - 如何过滤 pandas 中特定值的数据框?

标签 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 的副本。

我应该如何编写这样的代码(在这个例子中)才能正确且良好地完成它?有人可以分享建议吗?

最佳答案

您可以使用 | 运算符创建 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/

相关文章:

python - App Engine 内存缓存异步操作 get_multi_async

java - WEKA 库 M5P 返回 Java 异常

Python单元测试: how to run only part of a test file?

python - 对多个参数运行算法的最快方法,过去曾在更改一个变量后运行过该算法

python - 在 .loc[] 内使用 DataFrame 值

python - 如果组中的任何一行包含特定值,则创建新列并分配值

mysql - 更新统计计数器或仅计数(*) - 性能

python - 如何计算到达下一个值之前还剩下多少行?

c# - JIT 拒绝内联微型方法

c++ - 静态语言的运行时优化 : JIT for C++?