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。
有人知道如何做到这一点吗?
谢谢!
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)