首页 > 解决方案 > 熊猫 | 如何计算具有相同形状的多个数据框中每个单元格的平均值?

问题描述

我有几个这样的 DataFrame:

在此处输入图像描述

他们保存在一个列表中 df_list = [df1,df2,df3,df4,df5....]

我想生成一个新的 DataFrame df_average

df_average中,每个网格等于df1, df2, df3, df4,的对应网格的平均值df4。例如:

df_average[1,'Q1'] = 平均值(df1[1,'Q1'],df2[1,'Q1'],df3[1,'Q1'],df4[1,'Q1']),df_average[ 1,'Q2'] = 平均值(df1[1,'Q2'],df2[1,'Q2'],df3[1,'Q2'],df4[1,'Q2'])

如何有效地实现它?

标签: pandas

解决方案


您可以使用 pd.concat,然后在索引上使用 groupby,使用 mean 进行聚合。

df1 = pd.DataFrame({'Q1':[1,2,3], 'Q2':[1,7,8], 'Q3':[8,9,1], 'Q4':[4,3,7]})
df2 = pd.DataFrame({'Q1':[7,9,10], 'Q2':[9,2,8], 'Q3':[3,4,2], 'Q4':[1,5,6]})
df_average = pd.concat([df1, df2])
df_average = df_average.groupby(df_average.index).agg({'Q1': 'mean',
                                                       'Q2': 'mean',
                                                       'Q3': 'mean',
                                                       'Q4': 'mean'})

print(df_average)

    Q1  Q2  Q3  Q4
0   4.0 5.0 5.5 2.5
1   5.5 4.5 6.5 4.0
2   6.5 8.0 1.5 6.5

推荐阅读