计算熊猫timedeltas的扩展排名

问题描述

我有一个数据框,其中有一列计时赛的比赛时间定义为timedelta。从第一个启动程序开始,按每个竞争对手的原始开始时间对行进行排序。我想计算该竞争对手越过分界线的那一刻的排名。我希望输出看起来像这个小玩具示例中的expanding_rank列。尽管Rider2最终排名第4,但在目前通过拆分点时,他们排名第二,而Rider1最初排名第1,因为他们是通过拆分点的第一个骑手,但最终排名第3。

name    split_time          expanding_rank
Rider1  00:00:48.857987136  1
Rider2  00:00:49.297997592  2
Rider3  00:00:47.381634176  1
Rider4  00:00:49.409940252  4
Rider5  00:00:47.678197043  2

为此,我想我需要一个扩展的窗口计算,该计算将所有拆分时间排列到当前行并包括当前行。我以为我可以使用df['split_time'].expanding(1).rank()来做到这一点,但是看来expanding函数没有rank选项。我对应该如何处理感到困惑。

我尝试使用df.column_name.expanding.apply()语法修改this answer,但收到此错误ops for Expanding for this dtype timedelta64[ns] are not implemented

有人有什么主意吗?!

解决方法

您是否尝试过将索引重置为split_time? df.set_index('split_time') 从这里查找您的错误消息后,我有了这个主意 Pandas Rolling Window - datetime64[ns] are not implemented