过滤 Dataframe - 列和行

Filtering for Dataframe - columns and rows

我想对 Pandas 数据帧执行过滤。 示例 table 如下所示。例如,我想过滤(删除)所有包含值 2 的列。

C1 C2 C3 C4 C5
1  1  1  1  4
1  2  1  2  5
1  1  3  1  4

我想要这样的结果 table。 (删除了 C2 和 C4)

C1 C3 C5
1  1  4
1  1  5
1  3  4

此外,我想使用值 5 在行上执行此作业。

C1 C3 C5
1  1  4
1  3  4

对于单个列或行,我可以很容易地做到这一点,例如 df = df[df.C2 !=2],但我对多个列没有什么好主意或整个列和行。 有什么简单的方法吗?

您可以 select 通过 loc with any 并指定 axis:

print df
   C1  C2  C3  C4  C5
0   1   1   1   1   4
1   1   2   1   2   5
2   1   1   3   1   4

print ~(df == 2)
     C1     C2    C3     C4    C5
0  True   True  True   True  True
1  True  False  True  False  True
2  True   True  True   True  True

df = df.loc[:, ~(df == 2).any(axis=0)]
print df
   C1  C3  C5
0   1   1   4
1   1   1   5
2   1   3   4

df = df.loc[~(df == 5).any(axis=1)]
print df
   C1  C3  C5
0   1   1   4
2   1   3   4