我有几个这样的DataFrame:
他们正在保存列表df_list = [df1,df2,df3,df4,df5 ....]
我想生成一个新的DataFrame df_average
。
在df_average
中,每个网格等于df1
,df2
,df3
,df4
,{{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'])
如何有效地实现它?
答案 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