在熊猫中以分组依据取最后n个元素的平均值

时间:2019-02-15 15:43:12

标签: python pandas

我的熊猫数据框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()

2 个答案:

答案 0 :(得分:3)

让我们尝试groupbyapply。取最后三行并找出平均值。

df.groupby('Type').apply(lambda x: x.tail(3).mean())

           Value
Type            
A     110.496667
B     173.763333

类似地,您也可以这样做

df.groupby('Type').tail(3).groupby('Type').mean()

           Value
Type            
A     110.496667
B     173.763333

答案 1 :(得分:3)

使用time

的新方法
nth