You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中计算两个DataFrame的均值并按原列名合并?

解决DataFrame均值结果按原列名合并的问题

问题场景

有两个DataFrame,计算各自列均值后,原列名成为结果DataFrame的索引,无法直接使用pd.merge的on参数按原列名合并。

示例数据

import pandas as pd

df = pd.DataFrame({
'sepal_length': [5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0],
'sepal_width': [3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4],
'petal_length': [1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5],
'petal_width': [0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2]
 })

df2 = pd.DataFrame({
'sepal_length': [0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2],
'sepal_width': [3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4],
'petal_length': [1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5],
'petal_width': [1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5]
})

均值计算代码

df_one=df.mean(axis=0).to_frame('Mean_One')
df_two=df2.mean(axis=0).to_frame('Mean_Two')

解决方案

方法1:直接使用join合并(最简方案)

两个结果DataFrame的索引均为原列名且完全匹配,直接用join即可按索引合并:

merged_df = df_one.join(df_two)

方法2:重置索引后使用merge

将索引转换为普通列,再通过merge的on参数指定合并列:

# 重置索引,将原列名转为名为feature的普通列
df_one_reset = df_one.reset_index().rename(columns={'index': 'feature'})
df_two_reset = df_two.reset_index().rename(columns={'index': 'feature'})

# 按feature列合并
merged_df = pd.merge(df_one_reset, df_two_reset, on='feature')

方法3:计算均值时直接保留列名为普通列

在计算均值的步骤中就通过reset_index将原列名转为列,后续直接合并:

# 计算均值时直接把索引转为列,指定列名
df_one = df.mean(axis=0).reset_index(name='Mean_One')
df_two = df2.mean(axis=0).reset_index(name='Mean_Two')

# 按index列合并,可重命名列名让结果更清晰
merged_df = pd.merge(df_one, df_two, on='index').rename(columns={'index': 'feature'})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:15:57