首页 > 解决方案 > python pandas计算平均值

问题描述

我有一个这样的数据框:

        pk_dcdata     threshold   last_ep  diff
window                                                            
1        11075761       0.00001         4     3
1        11075768       0.00001         7     6
2        11075769       0.00001         1    -1
2        11075770       0.00001         1    -1
3        11075771       0.00001         1     0
3        11075768       0.00001         7     6

我想计算“差异”列中的平均值,但与索引“窗口”进行比较,并将平均值保存到新列表中。例如window = 1,均值是(3+6)/2,接下来是window = 2,所以(-1-1)/2,以此类推。

预期结果:list = [4.5,-1,3]

我尝试使用“rolling_mean”,但不知道如何设置移动长度。因为数据集很大,希望能快速得到结果。

标签: pythonpandas

解决方案


不要list用作变量,因为 python 保留字。

需要按每个索引汇总mean并最后转换Serieslist

L = df.groupby(level=0)['diff'].mean().tolist()
#alternative
#L = df.groupby('window')['diff'].mean().tolist()
print (L)
[4.5, -1.0, 3.0]

替代工作pandas 0.20.0+,检查文档


推荐阅读