python - 数据框列表对应元素的平均值

标签 python python-2.7 python-3.x pandas dataframe

我有一个包含 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/

相关文章:

python - 无法在 GPU 上运行 tensorflow

python - 我需要帮助网络抓取

python - 如何从给定列表中选择任意3个随机对象?

python-3.x - 逻辑不在 scipy 稀疏矩阵上

python - 如何将 .py 文件解释为 jupyter 笔记本

Python JSON 将数据保存到变量

python - 如何使用 Librosa 在 python 中读取音频?

python - 修改冷却装饰器以用于方法而不是函数

python - 在python中引发异常后的变量释放

c - 如何为 print() 编写 Python 包装器?