python - 使用(对于每个单元格)其他数据帧的平均值创建数据帧
问题描述
我有一个大约 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()
有更好的选择吗?谢谢
解决方案
利用 -
(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)