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

如何在非对称数据集上实现列的条件式成对求和?

自动识别成对列并求和合并的Pandas实现方案

针对200+列的非对称数据集,自动匹配如v2/v2_tocomb、v3_1/v3_tocomb_1这类成对列,求和生成新列并删除原列的实现如下:

1. 模拟测试数据

先构造和场景一致的非对称数据集:

import pandas as pd

data = {
    'id': [1, 2, 3],
    'v1': [10, 20, 30],  # 无对应合并列
    'v2': [5, 6, 7],
    'v2_tocomb': [15, 16, 17],
    'v3_1': [8, 9, 10],
    'v3_tocomb_1': [12, 13, 14],
    'v4': [25, 26, 27]  # 无对应合并列
}
df = pd.DataFrame(data)

2. 核心实现代码

通过字符串匹配自动识别配对列,完成求和与列清理:

# 获取全部列名列表
cols = df.columns.tolist()

# 筛选所有带_tocomb后缀的列
tocomb_cols = [col for col in cols if '_tocomb' in col]

# 遍历处理每一组配对列
for tocomb_col in tocomb_cols:
    # 推导对应的原始列名(移除_tocomb后缀)
    original_col = tocomb_col.replace('_tocomb', '')
    # 仅当原始列存在时执行合并
    if original_col in cols:
        # 生成合并列名:适配带数字后缀的列格式
        if '_' in original_col:
            comb_col = original_col.replace('_', '_comb_')
        else:
            comb_col = f"{original_col}_comb"
        # 两列求和生成新列
        df[comb_col] = df[original_col] + df[tocomb_col]
        # 删除原始的配对列
        df.drop([original_col, tocomb_col], axis=1, inplace=True)

3. 输出结果

执行后得到的最终数据集:

id  v1  v4  v2_comb  v3_comb_1
0   1  10  25       20         20
1   2  20  26       22         22
2   3  30  27       24         24

关键说明

  • 自动适配带数字后缀的列名(如v3_1/v3_tocomb_1),无需手动配置配对规则
  • 加入列存在性检查,避免因部分列无对应合并项导致报错
  • 保留无配对的原始列(如v1、v4),仅处理存在有效配对的列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:01:18