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()