如何在pandas中对仅后缀不同的同类型列进行逐行求和
解决方案
直接用 pandas 的列分组聚合即可,全程不需要手动指定列名,适配任意数量的列对,不受列顺序影响:
实现代码
import pandas as pd import re # 示例数据构造,你可以替换成自己读取的DataFrame df = pd.DataFrame({ 'total_customers': [1, 3], 'total_customers_2021-03-31': [10, 14], 'total_purchases': [4, 3], 'total_purchases_2021-03-31': [6, 2] }) # 定义前缀提取规则:去掉列名末尾的 _YYYY-MM-DD 格式后缀 def extract_prefix(col_name): return re.sub(r'_\d{4}-\d{2}-\d{2}$', '', col_name) # 按前缀对列分组,逐行求和 result = df.groupby(extract_prefix, axis=1).sum()
说明
- 如果你的列名存在单复数拼写差异(比如示例中疑似的
total_customers和total_customer_的拼写差),可以调整extract_prefix里的匹配规则,比如先统一单复数再分组即可。 - 该方法时间复杂度仅和你的DataFrame行列数正相关,哪怕有上百组列也能秒出结果。
内容的提问来源于stack exchange,提问作者titu84hh
相关产品推荐
相关产品推荐

