python - 数据帧的平均值

标签 python pandas dataframe

有没有一种直接的方法可以对多个数据帧(例如多次运行的模拟)取平均值? 我使用的一种方法是使用 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_numpyDataFrame.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/

相关文章:

python - Pandas 数据框 : How to set values after an index to 0

python - 使用 Pandas 对值(value)和时间指数的下采样或平均数据

Python:select() 不会发出来自管道的所有输入信号

python - 如何在 Python 中使用带有条件的 Groupby

python - 如何检查 pandas 数据框是否仅按列包含数值?

python - 为Python中的数据帧列表中的单个数据帧赋值

python - 用 moviepy 制作 mayavi 动画

python - ValueError:不支持的格式字符 'T' (0x54)

python - 如何在不排序的情况下迭代组?

python - Pandas 将列分成两部分并出现名称后缀错误