You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas将值为True的_flag列名合并至新列?

Pandas 实现每行True值对应_flag列名合并

问题场景

现有如下Pandas DataFrame代码:

import pandas as pd
import numpy as np
a= dict()
a['name']=['test','test1']
a['a_flag']=[True,True]
a['b_flag']=[True,False]
a['c_flag']=[True,False]
a['d_flag']=[True,True]
df = pd.DataFrame(a)
col_flag = df.filter(like='_flag')

需求:仅筛选名称包含_flag的列,将每行中值为True的对应列名合并到新列中。

实现方案

方法一:apply + 列表推导式(直观易懂)

通过apply逐行处理,筛选出当前行值为True的列名,再用逗号拼接成字符串:

df['flag_combined'] = col_flag.apply(lambda row: ','.join([col for col, val in row.items() if val]), axis=1)

方法二:dot矩阵乘法(高效适合大数据集)

利用矩阵乘法的特性,直接匹配True值对应的列名,最后去除末尾多余的分隔符:

df['flag_combined'] = col_flag.dot(col_flag.columns + ',').str.rstrip(',')

最终效果

执行后DataFrame新增flag_combined列,结果示例:

namea_flagb_flagc_flagd_flagflag_combined
testTrueTrueTrueTruea_flag,b_flag,c_flag,d_flag
test1TrueFalseFalseTruea_flag,d_flag

内容的提问来源于stack exchange,提问作者Clarence Chhoa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:13:14