You need to enable JavaScript to run this app. pandas中如何对相同名称的列计算每行平均值
优惠活动
大模型
产品
解决方案
定价
更多

pandas中如何对相同名称的列计算每行平均值

重复列名按列分组求行均值的实现方法

你写的df.groupby(by=df.columns, axis=1).mean()本身逻辑是正确的,没有得到预期结果大概率是你的DataFrame列名实际存在隐藏字符(比如前后空格、不可见特殊符号),导致名义上相同的列名没有被识别为同一分组。


正确实现方案

方案1:先清理列名再按列分组(推荐)

先统一清理列名的多余字符,再分组计算,避免隐藏字符干扰:

# 清理列名:去除前后空白字符、统一大小写等,按需调整
df.columns = df.columns.str.strip()
# 按列名分组,横向计算每行均值
df_mean = df.groupby(df.columns, axis=1).mean()

方案2:转置后按索引分组再转置

兼容性更强,不受pandas版本差异影响:

df_mean = df.T.groupby(level=0).mean().T

完整可运行测试代码

import pandas as pd

# 构造和你提供的结构一致的测试数据
df = pd.DataFrame(
    [[1,2,3,0,1,2,1,3,5],
     [4,5,6,3,4,5,2,4,6],
     [7,8,9,6,7,8,3,5,7]],
    columns=['a','a','a','b','b','b','c','c','c']
)

# 计算结果
df_mean = df.groupby(df.columns, axis=1).mean()
# 如果需要输出整数格式,加上类型转换即可
# df_mean = df_mean.astype(int)
print(df_mean)

运行后输出结果和你预期完全一致:

a    b    c
0  2.0  1.0  3.0
1  5.0  4.0  4.0
2  8.0  7.0  5.0

内容的提问来源于stack exchange,提问作者Julie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 02:24:02