如何快速计算含多个DataFrame的列表的平均DataFrame与平均值
计算多个DataFrame列表的平均DataFrame与整体平均值
如果你的手里有一组由多个Pandas DataFrame组成的列表,想要计算出它们的平均DataFrame(也就是每个对应位置元素的平均值组成的新DataFrame),下面是具体的实现方案:
生成示例测试数据
首先我们先造几个测试用的DataFrame来模拟场景:
import numpy as np import pandas as pd # 生成随机数据并转换为DataFrame d1 = np.random.normal(0, 0.5, 20).reshape(-1, 4) d2 = np.random.normal(0, 0.5, 20).reshape(-1, 4) d3 = np.random.normal(0, 0.5, 20).reshape(-1, 4) df1 = pd.DataFrame(d1) df2 = pd.DataFrame(d2) df3 = pd.DataFrame(d3) # 把DataFrame放进列表里 df_list = [df1, df2, df3]
计算平均DataFrame
这里我们可以借助functools里的reduce函数来实现,它能帮我们把列表里的DataFrame逐个累加起来,最后除以列表的长度就能得到平均DataFrame了:
from functools import reduce # 计算平均DataFrame average_df = reduce(lambda x, y: x + y, df_list)/len(df_list) # 查看结果 average_df
这段代码的逻辑很直观:reduce会遍历df_list,把每个DataFrame和之前累加的结果相加,最终得到所有DataFrame元素的总和,再除以DataFrame的数量,就得到了每个对应位置元素的平均值,也就是我们想要的平均DataFrame。如果需要整体的平均值,直接对average_df调用.mean().mean()即可得到所有元素的整体均值。
内容的提问来源于stack exchange,提问作者R.yan
相关产品推荐
相关产品推荐

