在pandas中用group by取最后n个元素的平均值

我有一个熊猫数据框 df 为:


Time    Type    Value

1/15/2019   A   109.99

1/16/2019   A   108.47

1/17/2019   A   107.71

1/18/2019   A   109.23

1/21/2019   A   109.23

1/22/2019   A   108.47

1/23/2019   A   110.75

1/24/2019   A   112.27

2/4/2019    B   172.1

2/5/2019    B   170.55

2/6/2019    B   170.55

2/7/2019    B   171.79

2/8/2019    B   172.41

2/11/2019   B   174.89

2/12/2019   B   176.15

2/13/2019   B   174.09

2/14/2019   B   171.05

我想从上面获得每种类型的最后 3 个值的平均值,如下所示:


Type Last3Avg

A    110.50

B    173.56

即average(108.47, 110.75, 112.27) = 110.50等。


我正在尝试以下各种语法但没有成功:


df.groupby('Type').ix[-3:].mean()


炎炎设计
浏览 327回答 2
2回答

慕田峪9158850

新的使用方式 nthdf.groupby('Type').nth([-1,-2,-3]).Value.mean(axis=0,level=0)Out[250]: TypeA    110.496667B    173.763333Name: Value, dtype: float64

慕少森

让我们尝试groupby和apply。取最后 3 行并找出它们的平均值。df.groupby('Type').apply(lambda x: x.tail(3).mean())           ValueType            A     110.496667B     173.763333同样,你也可以这样做df.groupby('Type').tail(3).groupby('Type').mean()           ValueType            A     110.496667B     173.763333
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python