有没有办法获得groupby中最后一个值的出现次数?

这是一个示例数据框 -

df = pd.DataFrame({'ID': ['a1', 'a1', 'a1', 'a1', 'b2', 'b2', 'b2'],
                   'Price': [15, 12, 10, 10, 36, 34, 36]})

  ID  Price 
0 a1  15
1 a1  12
2 a1  10
3 a1  10
4 b2  36
5 b2  34
6 b2  36

这是预期的输出 -

df.groupby('ID').agg({'Price': ['last', 'last_count']})
ID  Price_last Price_last_count
a1  10         2
b2  36         2

我需要能够在 agg 中执行“last_count”操作。

回答

df.groupby('ID')['Price'].agg(lastvalue = 'last', 
                              count = lambda x: sum(x==x.iloc[-1]) )


    lastvalue  count
ID                  
a1         10      2
b2         36      2

编辑以获取 OP 确切格式(由 Scott Boston 提供):

df.groupby('ID', as_index=False)
  .agg(Price_last= ('Price' , 'last'), 
       Price_last_count=('Price' , lambda x: sum(x==x.iloc[-1])))

输出:

   ID  Price_last  Price_last_count
0  a1          10                 2
1  b2          36                 2


以上是有没有办法获得groupby中最后一个值的出现次数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>