有没有一种直接的方法来计算多个数据框(例如多次模拟运行)的平均值? 我目前使用的一种方法是针对3个数据框(df1, df2, df3),但在处理大量数据框时并不是最有效的方法:
(df1+df2+df3)/3
有没有一种更直接的方式可以告诉Python做一些像
mean(df1,df2,df3)
这样的事情?df1 = pd.DataFrame({
'A':[4,5,4],
'B':[7,8,90],
})
df2 = pd.DataFrame({
'A':[4,50,4],
'B':[7,8,9],
})
df3 = pd.DataFrame({
'A':[40,5,4],
'B':[7,8,9],
})
print ((df1+df2+df3)/3)
A B
0 16.0 7.0
1 20.0 8.0
2 4.0 36.0
dfs = [df1, df2, df3]
df = pd.DataFrame(np.array([x.to_numpy() for x in dfs]).mean(axis=0),
index=df1.index,
columns=df1.columns)
print (df)
A B
0 16.0 7.0
1 20.0 8.0
2 4.0 36.0
DataFrame.to_numpy
更改为DataFrame.values
:df = pd.DataFrame(np.array([x.values for x in dfs]).mean(axis=0),
index=df1.index,
columns=df1.columns)
显然,所有的数据单元格都包含数值数据,如果你像这样计算平均值。我能想到的唯一改进是使用numpy数组。
import numpy as np
def df_mean(*dfs):
return np.array([np.array(df) for df in dfs]).mean(axis=0)
df_mean(df1, df2, df3) # you can put as many dfs as arguments as you want.
啊,@jezrael刚刚发布了相同的想法。
pd.concat((df1, df2, df3)).mean(level=0)
- Quang Hoang