为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2021-11-09 20:27:51
我有一个熊猫数据框 df 为:Time    Type    Value1/15/2019   A   109.991/16/2019   A   108.471/17/2019   A   107.711/18/2019   A   109.231/21/2019   A   109.231/22/2019   A   108.471/23/2019   A   110.751/24/2019   A   112.272/4/2019    B   172.12/5/2019    B   170.552/6/2019    B   170.552/7/2019    B   171.792/8/2019    B   172.412/11/2019   B   174.892/12/2019   B   176.152/13/2019   B   174.092/14/2019   B   171.05我想从上面获得每种类型的最后 3 个值的平均值,如下所示:Type Last3AvgA    110.50B    173.56即average(108.47, 110.75, 112.27) = 110.50等。我正在尝试以下各种语法但没有成功:df.groupby('Type').ix[-3:].mean()
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

新的使用方式 nth


df.groupby('Type').nth([-1,-2,-3]).Value.mean(axis=0,level=0)

Out[250]: 

Type

A    110.496667

B    173.763333

Name: Value, dtype: float64


查看完整回答
反对 回复 2021-11-09
?
慕少森

TA贡献2019条经验 获得超9个赞

让我们尝试groupby和apply。取最后 3 行并找出它们的平均值。


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


查看完整回答
反对 回复 2021-11-09
  • 2 回答
  • 0 关注
  • 291 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信