首页 > 解决方案 > 使用(对于每个单元格)其他数据帧的平均值创建数据帧

问题描述

我有一个大约 20 个数据框的列表,它们都具有相同的结构(相同的行和列)。我想创建一个新的 df,其中每个单元格等于列出的 dfs 的相应(相同行/列)单元格的平均值。

因此,例如,如果我们只有 2 个 dfs(A 和 B),我需要以下内容:

A=
   A  B  C  D
0  7  6  8  7
1  7  0  7  6
2  9  2  7  0

B=
   A  B  C  D
0  6  9  2  7
1  4  4  5  7
2  6  8  5  4

Average=
     A    B    C    D
0  6.5  7.5  5.0  7.0
1  5.5  2.0  6.0  6.5
2  7.5  5.0  6.0  2.0

我试过这段代码,但它很慢(真正的 dfs 很大)并且弄乱了列的顺序:

dfs = [A,B]

Average = pd.concat([each.stack() for each in dfs],axis=1)\
             .apply(lambda x:x.mean(),axis=1)\
             .unstack()

有更好的选择吗?谢谢

标签: pythonpandasdataframe

解决方案


利用 -

(A+B) / 2

输出

     A    B    C    D
0  6.5  7.5  5.0  7.0
1  5.5  2.0  6.0  6.5
2  7.5  5.0  6.0  2.0

为了扩大规模dfs,将它们全部放在一个列表中,然后使用sum(list). 编辑:基于@younggoti的reco-

list_of_df = [A,B]
sum(list_of_df)/len(list_of_df)

推荐阅读