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

如何对DataFrame中增量命名的列应用公式运算?

简便实现增量列加权求和的方法

嘿,这个需求太常见了,完全不用手动敲15个列名,给你几个高效的方案,适配不同的场景:

  • 方案一:基于列名前缀筛选+拆分提取乘数
    如果你所有目标列都是以A_开头的,先筛选出这些列,再从列名里拆分出后面的数字作为乘数,最后做加权求和:

    import pandas as pd
    
    # 假设你的DataFrame名为df
    # 筛选所有以"A_"开头的列
    target_cols = [col for col in df.columns if col.startswith('A_')]
    # 从列名中提取乘数(比如A_3提取出3)
    multipliers = [int(col.split('_')[1]) for col in target_cols]
    # 计算加权和并添加为新列
    df['weighted_sum'] = df[target_cols].mul(multipliers).sum(axis=1)
    

    这个方法的好处是自动适配所有符合命名规则的列,哪怕以后列数从15变20,代码也不用改。

  • 方案二:正则匹配提取乘数(更严谨)
    如果担心有其他类似命名的列干扰(比如A_100或者B_1),可以用正则表达式精准匹配列名,再提取乘数:

    # 用正则匹配A_加数字的列
    target_cols = df.columns[df.columns.str.match(r'^A_\d+$')]
    # 提取列名中的数字部分并转为整数
    multipliers = target_cols.str.extract(r'A_(\d+)', expand=False).astype(int)
    # 加权求和
    df['weighted_sum'] = df[target_cols].mul(multipliers, axis=1).sum(axis=1)
    

    正则匹配能确保只选中你需要的列,避免误操作。

  • 方案三:直接生成列名(列名连续时用)
    如果你确定列是严格从A_1到A_15连续命名的,直接生成列名列表更简单:

    # 生成A_1到A_15的列名
    target_cols = [f'A_{i}' for i in range(1, 16)]
    # 乘数就是1到15的整数
    multipliers = list(range(1, 16))
    # 计算结果
    df['weighted_sum'] = df[target_cols].mul(multipliers).sum(axis=1)
    

    这个代码最简洁,适合列名完全连续的场景。

不管用哪个方法,都能避免手动列写15个列名,而且扩展性拉满~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:28:34