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

如何对Pandas Dataframe中名称匹配指定字符串的列求和并生成新列

Pandas 按列名匹配规则新增求和列实现方案

核心实现(一行代码搞定)

两种常用写法都基于Pandas向量化运算,执行效率远高于自定义逐行遍历逻辑:

写法1:正则匹配(适合复杂规则)

使用filter方法配合正则筛选目标列,直接按行求和:
df['C_sum'] = df.filter(regex=r'^C_').sum(axis=1)

  • 正则规则可按需自定义:比如r'_test$'匹配以_test结尾的列,r'xxx'匹配包含xxx的列
  • axis=1指定按行计算,必须传入

写法2:字符串匹配(适合简单规则)

如果只是前缀/后缀/包含这类简单匹配,用列名的str方法可读性更高:

# 前缀匹配
df['C_sum'] = df.loc[:, df.columns.str.startswith('C_')].sum(axis=1)
# 后缀匹配示例
# df['C_sum'] = df.loc[:, df.columns.str.endswith('_end')].sum(axis=1)
# 包含特定字符示例
# df['C_sum'] = df.loc[:, df.columns.str.contains('target')].sum(axis=1)

补充说明

  • 两种实现都默认跳过空值NaN求和,如果需要遇到空值就返回空,可添加参数skipna=False,例:sum(axis=1, skipna=False)
  • 面向百万行以上的大表也能保持很高的执行效率,不需要自行实现循环逻辑

测试示例

你可以用以下代码验证效果:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'A': [1,2,3],
    'B': [4,5,6],
    'C_1': [7,8,9],
    'C_2': [10,11,12],
    'C_3': [13,14,15],
    'C_x': [16,17,18]
})

# 新增C_sum列
df['C_sum'] = df.filter(regex=r'^C_').sum(axis=1)
print(df['C_sum'])
# 输出:
# 0    46
# 1    50
# 2    54
# Name: C_sum, dtype: int64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 09:45:08