如何用Python计算Excel中A-C列内容相同行的D-G列均值
修正Python代码:按Excel中A-C列分组计算D-G列均值
核心解决方案:使用Pandas的groupby实现动态分组计算
放弃硬编码行位置的方式,用Pandas的分组功能可以自动识别A、B、C列内容完全相同的行组,并批量计算均值,代码如下:
import pandas as pd # 读取目标Excel文件 df = pd.read_excel("your_excel_file.xlsx") # 按A、B、C列分组,对D-G列求均值,重置索引让分组列变回普通列 result_df = df.groupby(['A', 'B', 'C'])[['D', 'E', 'F', 'G']].mean().reset_index() # 查看结果或保存到新Excel print(result_df) # result_df.to_excel("grouped_mean_result.xlsx", index=False)
代码解释
groupby(['A', 'B', 'C']):自动将A、B、C列内容完全一致的行归为同一组,无需手动指定行位置,适配任何分组分布。[['D', 'E', 'F', 'G']].mean():对每个分组的D到G列分别计算均值。reset_index():将原本作为分组索引的A、B、C列转换为普通数据列,方便后续查看或导出。
示例验证
假设你的Excel原始数据为:
| A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|
| 甲 | 乙 | 丙 | 2 | 4 | 6 | 8 |
| 甲 | 乙 | 丙 | 1 | 3 | 5 | 7 |
| 丁 | 戊 | 己 | 10 | 20 | 30 | 40 |
运行代码后得到的期望结果:
| A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|
| 甲 | 乙 | 丙 | 1.5 | 3.5 | 5.5 | 7.5 |
| 丁 | 戊 | 己 | 10.0 | 20.0 | 30.0 | 40.0 |
原硬编码方案的问题
硬编码行位置(比如df.loc[0:1, 'D':'G'].mean())的局限性非常明显:
- 只能处理固定的行范围,无法自动识别所有分组;
- 数据更新或分组位置变化时,代码会直接报错或计算结果错误;
- 无法批量处理多个分组,效率极低。
内容的提问来源于stack exchange,提问作者Findy
相关产品推荐
相关产品推荐

