如何基于Boolean值为Pandas DataFrame生成列名汇总列?
解决方案
首先构造与你需求匹配的示例DataFrame:
import pandas as pd df = pd.DataFrame({ 'black': [True, False, True, False], 'yellow': [True, True, True, False], 'orange': [True, False, False, True] })
方法一:用apply逐行处理(逻辑直观)
适合小数据集,代码可读性强:
df['summary'] = df.apply(lambda row: ', '.join(row[row].index), axis=1)
逻辑说明:row[row]会筛选出当前行值为True的元素,取这些元素的索引(即列名),再用, 拼接成目标字符串。
方法二:用dot方法(高效推荐)
适合大数据集,运行速度远快于apply:
df['summary'] = df.dot(df.columns + ', ').str.rstrip(', ')
逻辑说明:dot运算会将每行中True对应的列名与, 拼接,最后用str.rstrip(', ')移除末尾多余的逗号和空格。
执行后得到的结果完全符合你的需求,最终DataFrame如下:
| black | yellow | orange | summary |
|---|---|---|---|
| True | True | True | black, yellow, orange |
| False | True | False | yellow |
| True | True | False | black, yellow |
| False | False | True | orange |
内容的提问来源于stack exchange,提问作者siusiusiu
相关产品推荐
相关产品推荐

