Power Query:如何按列名前两位动态合并并求和列?
问题
我处理后得到一份表格,每一列对应一个周数和相关数值。因为周数存在跨月的情况,出现了需要合并求和的列——比如列名“48”和“481”需要求和后合并成名为“48”的列。想请教:能不能根据列名的前两位数字动态求和?也就是把所有以XX开头的列(XX和XX1)合并求和,最终保留名为XX的列。
解决方案
当然可以实现,这里以Python的Pandas库(处理表格数据的常用工具)为例,给出具体实现方法:
实现逻辑
- 以列名的前两位字符作为分组标识
- 对每个分组内的所有列数值求和
- 生成合并后的新表格
代码示例
import pandas as pd # 模拟你的表格数据 df = pd.DataFrame({ '48': [10, 20, 15], '481': [5, 8, 7], '49': [15, 25, 20], '50': [7, 12, 9], '501': [3, 6, 4] }) # 按列名前两位分组并求和 merged_df = df.groupby(lambda col: col[:2], axis=1).sum() # 输出合并后的结果 print(merged_df)
运行这段代码后,所有前两位相同的列会被自动合并求和,比如“48”和“481”的数值会相加,最终保留名为“48”的列,完全满足动态求和的需求。
如果是用Excel处理,也可以用类似逻辑:
- 用
LEFT函数提取列名的前两位 - 结合
SUMIF函数对匹配前两位的列进行求和 - 或者使用Power Query的分组功能,按列名前两位分组实现自动合并
内容的提问来源于stack exchange,提问作者Artemy Panin
相关产品推荐
相关产品推荐

