如何在Pandas中计算多个同表头DataFrame的列均值?
计算多个同表头DataFrame对应列的均值
我有三个(或更多)表头完全相同的DataFrame,具体定义如下:
import pandas as pd df1 = pd.DataFrame({ 's1': [230, 345, 222], 's2': [235, 375, 292], 's3': [210, 385, 260], 's4': [10, 315, 120], 's5': [110, 138, 560] }) df2 = pd.DataFrame({ 's1': [130, 325, 232], 's2': [218, 354, 234], 's3': [217, 185, 340], 's4': [180, 364, 450], 's5': [140, 148, 120] }) df3 = pd.DataFrame({ 's1': [30, 315, 542], 's2': [235, 315, 22], 's3': [216, 35, 260], 's4': [910, 209, 720], 's5': [11, 178, 360] })
需要计算这些DataFrame中对应表头列的均值,期望结果如下:
mean = pd.DataFrame({ 's1': [130, 328.33, 332], 's2': [229.3, 348, 182.67], 's3': [214.3, 201.67, 286.67], 's4': [366.67, 296, 430], 's5': [87, 154.67, 346.67] })
解决方案
直接通过pd.concat合并所有DataFrame,按原始行索引分组计算均值并保留两位小数:
# 收集所有DataFrame到列表 dfs = [df1, df2, df3] # 合并后分组求均值 mean_df = pd.concat(dfs).groupby(level=0).mean().round(2) # 输出结果 print(mean_df)
运行结果:
s1 s2 s3 s4 s5 0 130.00 229.33 214.33 366.67 87.00 1 328.33 348.00 201.67 296.00 154.67 2 332.00 182.67 286.67 430.00 346.67
内容的提问来源于stack exchange,提问作者Aristocrat
相关产品推荐
相关产品推荐

