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

Pandas多列合并为单列:按列后缀生成汇总列

合并DataFrame中同后缀列为满足条件的单列

嘿,我来帮你搞定这个需求!你需要把DataFrame里所有后缀相同的列合并成新列,规则是当该后缀下的所有列值全为'1'时新列取1,否则取0,对吧?这里有个高效的实现方案,比逐行循环或者apply逐行处理要快得多,尤其适合大数据量的场景:

步骤拆解与代码实现

首先,我们先把列按后缀分组,然后对每组列做向量化的判断操作:

import pandas as pd

# 先模拟你的DataFrame(替换成你实际的df即可)
data = {
    'feat_a_1': ['1', '1', '0', '1'],
    'feat_b_1': ['1', '0', '1', '1'],
    'feat_c_2': ['1', '1', '1', '0'],
    'feat_d_2': ['1', '1', '0', '1']
}
df = pd.DataFrame(data)

# 1. 按后缀分组:把所有列按最后一个下划线后的后缀归类
col_groups = {}
for col in df.columns:
    # 拆分列名,取最后一个下划线后的部分作为后缀
    if '_' in col:
        suffix = col.split('_')[-1]
        if suffix not in col_groups:
            col_groups[suffix] = []
        col_groups[suffix].append(col)

# 2. 遍历每个后缀组,生成对应的final列
for suffix, cols in col_groups.items():
    # 向量化判断:先判断每个元素是否为'1',再检查每行是否全为True,最后转成int(1/0)
    df[f'final_{suffix}'] = (df[cols] == '1').all(axis=1).astype(int)

代码解释

  • 列分组:通过拆分列名的方式,把所有同后缀的列归到一组,比如所有以_1结尾的列会被分到suffix='1'的组里。
  • 向量化判断:df[cols] == '1'会生成一个布尔值的DataFrame,all(axis=1)检查每行的所有值是否都是True(也就是原列值全为'1'),最后astype(int)把布尔值转换成1(True)和0(False)。

效果展示

运行上面的代码后,你的DataFrame会新增final_1和final_2列:

feat_a_1feat_b_1feat_c_2feat_d_2final_1final_2
111111
101101
011000
110110

如果你的原数据中'1'是数字类型(不是字符串),只需要把代码里的'1'改成1就可以啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:59:52