作者:-刘耀宗_690 | 来源:互联网 | 2023-08-06 19:28
In [4]: df = pd.DataFrame({'a': [True, False, True], 'b': [False, False, False],
...: 'c': [False, False, False], 'd': [False, True, False],
...: 'e': [False, False, False]})
In [5]: df
Out[5]:
a b c d e
0 True False False False False
1 False False False True False
2 True False False False False
In [6]: df[df.any()[df.any()].index]
Out[6]:
a d
0 True False
1 False True
2 True False
[6] 下的代码做了我想要的。然而,我的问题是:有更好的解决方案吗?也就是说,更简洁和/或更优雅。
回答
一种直接方法是将df.loc
生成的掩码df.any()
用作输入:
df.loc[:, df.any()]
a d
0 True False
1 False True
2 True False
另一种选择是索引df.columns
,
df[df.columns[df.any()]]
或者,df.keys()
:
df[df.keys()[df.any()]]
a d
0 True False
1 False True
2 True False