在PandasDataFrame中选择包含至少一个True值的列的最佳解决方案

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


以上是在PandasDataFrame中选择包含至少一个True值的列的最佳解决方案的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>