Python 创建具有重复项的时间序列序列

Python 创建具有重复项的时间序列序列,python,pandas,Python,Pandas,我有时间序列数据,例如 time action ------------------ 10:00 move left 09:45 move right 09:40 move up 09:40 move away 09:35 move down 如何创建显示操作序列的新字段,但如果两个操作具有相同的时间戳,则它们应该具有相同的序列号,例如: time action seqNo ---------------------------- 10:00

我有时间序列数据,例如

time    action
------------------
10:00   move left
09:45   move right
09:40   move up
09:40   move away
09:35   move down
如何创建显示操作序列的新字段,但如果两个操作具有相同的时间戳,则它们应该具有相同的序列号,例如:

time    action        seqNo
----------------------------
10:00   move left     1
09:45   move right    2
09:40   move up       3
09:40   move away     3
09:35   move down     4

您可以对时间列进行排序。如果您的时间格式都很好,您可以转换为
timedelta
,否则
pd.to_datetime
更灵活,只需使用今天的日期来填充默认值。既然每一行都一样,那就没关系了

df['SeqNo'] = pd.to_timedelta('00:'+df.time).rank(ascending=False, method='dense').astype(int)
#df['seqNo'] = pd.to_datetime(df.time).rank(ascending=False, method='dense').astype(int)

    time      action  seqNo
0  10:00   move_left      1
1  09:45  move_right      2
2  09:40     move_up      3
3  09:40   move_away      3
4  09:35   move_down      4

如果保证您的行是有序的,则创建一个布尔序列,检查时间是否与前一行不同,然后
cumsum
。不需要任何日期转换

df['seqNo'] = df['time'].ne(df['time'].shift()).cumsum()