python-熊猫数据框聚合固定数量的行
作者:互联网
我正在处理一些数据,在这里我想获得每匹马在最近一次奔跑中的排名(终点).运行日期定义为“ race_id”.
有没有一种方法可以使用groupby和agg,但是只汇总前6个值?
数据帧如下:
finishing_position horse_id race_id
1 K01 2014011
2 K02 2014011
3 M01 2014011
4 K01 2014012
2 K01 2014021
3 K01 2014031
1 M01 2015011
2 K01 2016012
1 K02 2016012
3 M01 2016012
4 J01 2016012
我希望结果是
finishing_position horse_id race_id recent
1 K01 2014011
2 K02 2014011
3 M01 2014011
4 K01 2014012 1
2 K01 2014021 1/4
3 K01 2014031 1/4/2
1 M01 2015011 3
2 K01 2016012 1/4/2/3
1 K02 2016012 2
3 M01 2016012 3/1
4 J01 2016012
解决方法:
我们可以将cumsum与groupby一起使用
df['recent']=df.finishing_position.astype(str)+'/'
df['recent']=df.groupby('horse_id').recent.apply(lambda x : x.cumsum().shift().str[:-1].fillna(''))
df
Out[140]:
finishing_position horse_id race_id recent
0 1 K01 2014011
1 2 K02 2014011
2 3 M01 2014011
3 4 K01 2014012 1
4 2 K01 2014021 1/4
5 3 K01 2014031 1/4/2
6 1 M01 2015011 3
7 2 K01 2016012 1/4/2/3
8 1 K02 2016012 2
9 3 M01 2016012 3/1
10 4 J01 2016012
标签:pandas-groupby,pandas,python,sql 来源: https://codeday.me/bug/20191025/1927120.html