Pandas按列名筛选列求和合并为新列的简洁实现方法
解答
完全可以用.groupby实现,单行就能搞定,比你现在的写法简洁很多:
import numpy as np import pandas as pd # 构造示例数据 a = pd.DataFrame(np.random.randn(5, 5), columns=["Col_1","X_1","X_2","X_3","Col_3"]) # 核心实现 res = a.groupby(lambda c: "Col_2" if c.startswith("X") else c, axis=1).sum()
逻辑说明
- 传入
axis=1指定按列维度分组 - 分组规则用匿名函数判断列名:所有
X开头的列统一分到Col_2组,其余列各自用原列名作为独立分组 - 分组后直接调用
.sum()即可:单独成组的非X列求和后值和原列完全一致,X列分组求和就是你要的三列累加结果,最终列顺序自动为Col_1、Col_2、Col_3,不需要额外做删列、拼接、重命名操作。
这个写法扩展性也更好,后续如果要合并其他前缀/规则的列,只需要修改匿名函数里的判断条件就行。
内容的提问来源于stack exchange,提问作者colibro
相关产品推荐
相关产品推荐

