我有一个包含 3 个数据框的列表(相同的形状和相同的列名)。我想取每个数据框中所有对应元素的平均值。
df3 = pd.DataFrame(np.random.randn(8, 3), columns= ['M', 'N', 'O'])
df4 = pd.DataFrame(np.random.randn(8, 3), columns= ['M', 'N', 'O'])
df5 = pd.DataFrame(np.random.randn(8, 3), columns= ['M', 'N', 'O'])
目前,我正打算这样做。
pd.DataFrame.add(df5, df4, df3)/3
但是我有一大堆数据帧进来了——比方说有 100 个数据帧的列表。请提出一个更好的方法来解决这个问题。有没有办法不用循环它们?
最佳答案
您可以只对列表使用 sum
,然后除以列表的 len,而不管数据框中可能的 nans
:
list_of_dfs = [df3, df4, df5]
sum(list_of_dfs)/len(list_of_dfs)
# M N O
#0 -0.264907 0.465489 0.238963
#1 -1.020216 0.235631 -0.227061
#2 0.331727 1.061115 0.188867
或者您可以使用reduce
方法调用pd.DataFrame.add
将列表中的所有数据框一起添加:
reduce(pd.DataFrame.add, list_of_dfs)/len(list_of_dfs)
# M N O
#0 -0.264907 0.465489 0.238963
#1 -1.020216 0.235631 -0.227061
如果使用python 3,首先导入reduce:
from functools import reduce
关于python - 数据框列表对应元素的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45156125/