我试图确定如何创建一个列来标识行数,直到下一个值出现在另一个列中,该列本质上执行以下功能:
rowid event countdown
1 False NaT
2 True 0 # resets countdown
3 False 1
4 False 2
5 True 0 # resets countdown
6 False 1
其中,事件列定义列中的事件是否发生(True)或不发生(False)。倒计时列标识在所述事件发生之前必须发生的后续行/步骤的数量。我尝试了以下方法:
y['block'] = (y['event'] != y['event'].shift(1)).astype(int).cumsum()
y['countdown'] = y.groupby('block').transform(lambda x: range(1, len(x) + 1))
但是对于操作来说,它似乎非常低效,并且不一定按照描述执行操作,将时段标识为组,而不是简单的展开
有人知道我怎样才能简明扼要地做到这一点吗,谢谢
我将做什么
cumcount
相关问题 更多 >
编程相关推荐