我正在处理一些数据,这里我想得到每匹马在最近的跑步中的排名(finishing position
)(在跑步前最多跑6次)。运行日期定义为'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
对@Wen-answer进行了修改,使总数仅达到N个以前的记录
相关问题 更多 >
编程相关推荐