python - 删除 Pandas 数据框中包含特定值的列和行

标签 python pandas dataframe filtering

<分区>

我有一个 pandas 数据框,看起来像这样(但实际上要大得多):

           a    b    c    d    e      f      g     h    i    j

       0|  0    1    2    3    4    -500   -500    5    6    7 
       1|  2    3    4    5    6    -500   -500    6    5    4
       2|-500 -500 -500 -500 -500   -500   -500  -500 -500 -500
       3|  3    4    5    2    1    -500   -500    5    3    6

我只想删除包含 -500 (2) 的整行和整列(f 和 g)。我的数据框是自动生成的,我不知道哪些列和行包含 -500。

有人知道如何做到这一点吗?

谢谢!

最佳答案

In [76]: mask = df.eq(-500)

In [77]: df.loc[~mask.all(1), ~mask.all()]
Out[77]:
   a  b  c  d  e  h  i  j
0  0  1  2  3  4  5  6  7
1  2  3  4  5  6  6  5  4
3  3  4  5  2  1  5  3  6

In [83]: mask = df.ne(-500)

In [85]: df = df.loc[mask.any(1), mask.any()]

In [86]: df
Out[86]:
   a  b  c  d  e  h  i  j
0  0  1  2  3  4  5  6  7
1  2  3  4  5  6  6  5  4
3  3  4  5  2  1  5  3  6

这是 mask 的样子:

In [87]: mask
Out[87]:
       a      b      c      d      e      f      g      h      i      j
0   True   True   True   True   True  False  False   True   True   True
1   True   True   True   True   True  False  False   True   True   True
2  False  False  False  False  False  False  False  False  False  False
3   True   True   True   True   True  False  False   True   True   True

关于python - 删除 Pandas 数据框中包含特定值的列和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43695602/

相关文章:

python - 总结存储在数据框中的多个列表

python - 我如何通过行数找到Python中的唯一记录?

python - 无法转换该列的数据时间(对象到时间)

python - 在 for 循环中使用 if 语句时 python 中的缩进错误

python - BigQuery 加载作业在来自 JSON 的 bool 数据类型字段上失败

python - 多索引 Pandas groupby,忽略一个级别?

python - Graphviz:为具有彩虹效果的线条着色

python - 使用多处理过滤 Pandas 中的大型数据框

python - 使用正则表达式根据列的值在数据集中创建新列

r - 使用 "mirror"观测值扩展数据框