熊猫|如何计算形状相同的多个数据框中每个像元的平均值?

时间:2020-07-01 17:36:20

标签: pandas

我有几个这样的DataFrame:

enter image description here

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

我想生成一个新的DataFrame df_average

df_average中,每个网格等于df1df2df3df4,{{1 }}。例如:

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'])

如何有效地实现它?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

以下代码表示每个单元的平均值。输出大小与其他数据帧相同:

Catalina 10.15.5

输出:

# Import libraries
import pandas as pd

# Create DataFrame
df1 = pd.DataFrame({
    'Q1': [1,2,3],
    'Q2': [11,12,13],
    'Q3': [10,20,30],
    'Q4': [31,32,33],
    'Q5': [61,62,63],
})
df2 = df1.copy()*2
df3 = df1.copy()*0.5
df4 = df1.copy()*-1

# Get average
df_average = (df1+df2+df3+df4)/4
df_average