我有一个熊猫数据框 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
慕少森
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
添加回答
举报
0/150
提交
取消