Pandas如何对列名以_col结尾的DataFrame列逐行求和
实现方法
pandas 提供了非常便捷的列筛选+行求和组合方案,不需要手动枚举所有符合条件的列,后续新增符合命名规则的列时也会自动纳入计算。
基础实现(简单场景)
如果你的表中不存在列名中间包含_col的特殊情况,可以直接用filter的like参数模糊匹配包含_col的列,再沿行方向求和即可:
import pandas as pd d = {'1_col': [1, 2], '2_col': [3, 4], 'var1': [5,6]} df = pd.DataFrame(data=d) # 筛选目标列并逐行求和,赋值给新列sum df['sum'] = df.filter(like='_col', axis=1).sum(axis=1) print(df)
运行输出完全符合预期:
1_col 2_col var1 sum 0 1 3 5 4 1 2 4 6 6
严谨匹配场景(推荐)
如果你的表中可能存在列名中间包含_col、但不是以_col结尾的列(比如列名a_col_b),建议用严格后缀匹配的方式避免误算,两种写法任选即可:
- filter正则匹配:
# 正则中$代表字符串结尾,仅匹配列名以_col结尾的列 df['sum'] = df.filter(regex='_col$', axis=1).sum(axis=1) - 原生字符串判断:
# 直接调用字符串endswith方法判断列名后缀 df['sum'] = df[[col for col in df.columns if col.endswith('_col')]].sum(axis=1)
以上所有写法都不需要手动指定具体列名,只要列名符合后缀规则就会自动被纳入求和范围。
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

