python熊猫计算出平均值

时间:2018-07-24 11:51:27

标签: 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

我要计算“ diff”列中的平均值,但要与索引“ window”进行比较,然后将平均值保存到新列表中。例如window = 1,平均值是(3 + 6)/ 2,下一个是window = 2,所以(-1-1)/ 2依此类推。

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

我尝试使用'rolling_mean',但不知道如何设置移动长度。由于数据集很大,因此希望可以快速获得结果。

2 个答案:

答案 0 :(得分:2)

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

需要按每个索引mean进行汇总,最后将Series转换为list

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+中替代工作,请选中docs

答案 1 :(得分:0)

您可以使用groupby():假设您的数据帧称为df

avg_diff = df['diff'].groupby(level=0).mean()

这将为您提供一个基于window的数据框。 如果要把它放在列表中,可以这样:

my_list = avg.tolist()