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

标签 python pandas dataframe

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

关于python - 在 Pandas DataFrame 中选择包含至少一个 True 值的列的最佳解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65452608/

相关文章:

python - Pandas datetime 函数获取季度末的日期

python - 计算单词列表中的元音与单词长度比

python - 如何在 Pandas 中迭代数据框时保留数据类型?

python - 使用 xlwings 写入现有 Excel 工作簿

python - 如何仅选择时间序列中的常量值

python - 将带有时间戳的 Pandas 数据框转换为字符串

python - draw() 缺少 1 个必需的位置参数 : 'surface'

python - Pandas:对于几列中的每个行值,将其转换为新行

python - MySQL "IN"查询中的多个参数

python - Pandas 以负前瞻作为分隔符读取 csv