有没有一种直接的方法可以对多个数据帧(例如多次运行的模拟)取平均值? 我使用的一种方法是使用 3 个数据帧(df1、df2、df3),但在有大量数据帧时不是最有效的方法是:
(df1+df2+df3)/3
有没有办法让 Python 做一些更直接的事情,比如 mean(df1,df2,df3)
?
最佳答案
为了避免 concat
,可以将所有数据转换为 numpy 数组并使用 mean
by axis=0
,最后将输出转换为 DataFrame
构造函数:
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
对于较旧的 pandas 版本更改 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)
关于python - 数据帧的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60434020/