如何在pandas中对同前缀不同日期后缀的列分组逐行求和
实现方案
直接使用pandas的列分组聚合即可,无需手动指定列名,自动适配任意数量的前缀组、任意列排序,执行效率很高。
步骤1:导入依赖包
import pandas as pd import re
步骤2:定义列名前缀提取规则
根据你提到的「仅后缀为日期标识」的列名规则,通过正则移除列名末尾的日期后缀,得到分组用的基础列名:
def get_base_col(col_name): # 正则匹配末尾的_+yyyy-mm-dd格式日期及后续字符,可根据你实际的日期后缀格式调整正则规则 return re.sub(r'_\d{4}-\d{2}-\d{2}.*$', '', col_name)
步骤3:按列分组求和
直接对列维度按提取的基础列名分组,按行求和即可得到结果:
# 假设你的原始DataFrame变量名为df result = df.groupby(get_base_col, axis=1).sum()
效果验证
针对你给出的示例数据,执行后得到的result结构完全符合预期:
| total_customer |
|---|
| 15 |
| 20 |
补充说明
- 如果有多个不同前缀的列组(比如同时存在
total_customer、total_order等多组列),代码会自动对所有组分别求和,无需额外调整 - 若你的日期后缀格式不是
yyyy-mm-dd,只需修改get_base_col函数里的正则规则即可,比如后缀是8位数字日期的话,正则改为r'_\d{8}.*$' - 该方案对几百组列的处理效率极高,不会出现性能问题
内容的提问来源于stack exchange,提问作者titu84hh
相关产品推荐
相关产品推荐

