删除 pandas 数据框中包含特定值的列和行

Viv*_*ien 7 python filtering dataframe pandas

我有一个 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
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢!

Max*_*axU 4

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
Run Code Online (Sandbox Code Playgroud)

或者

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
Run Code Online (Sandbox Code Playgroud)

看起来是这样的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
Run Code Online (Sandbox Code Playgroud)