炎炎設(shè)計(jì)
2021-11-09 20:27:51
我有一個(gè)熊貓數(shù)據(jù)框 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 個(gè)值的平均值,如下所示:Type Last3AvgA 110.50B 173.56即average(108.47, 110.75, 112.27) = 110.50等。我正在嘗試以下各種語法但沒有成功:df.groupby('Type').ix[-3:].mean()
2 回答

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
新的使用方式 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貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
讓我們嘗試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
添加回答
舉報(bào)
0/150
提交
取消