非固定时间间隔数据集如何为重复时间戳行分配唯一时间戳
解决方法
实现逻辑
- 保留原有时间戳的先后顺序,给同一时间戳下的每行依次叠加极小的时间偏移量,生成唯一时间戳,偏移量的粒度可根据你的业务容忍度调整,不会破坏原始时间的语义。
- 不需要插值,适配同时间戳行数不固定、时间步长不固定的场景。
具体代码实现
首先先将时间列转换为pandas标准时间格式:df['timestamp'] = pd.to_datetime(df['timestamp'])
随后生成唯一时间戳:
# 给同一时间戳下的行按原始顺序生成从0开始的序号 df['grp_seq'] = df.groupby('timestamp').cumcount() # 叠加时间偏移,这里以1毫秒为最小偏移单位,可按需替换 # 微秒偏移:pd.Timedelta(microseconds=1),纳秒偏移:pd.Timedelta(nanoseconds=1) df['unique_timestamp'] = df['timestamp'] + df['grp_seq'] * pd.Timedelta(milliseconds=1) # 可选:删除临时生成的序号列 df.drop('grp_seq', axis=1, inplace=True)
注意事项
- 如果你原始时间戳之间的最小间隔小于你选择的偏移单位,比如原始时间戳间隔只有0.5毫秒,那就把偏移单位改成更小的微秒即可,避免出现后一组的时间戳加完偏移后早于前一组的情况。
- 你之前写的统计行数的代码有两处拼写错误,修正后版本为:
pd.DataFrame(df.groupby(['timestamp'])['A'].count())
内容的提问来源于stack exchange,提问作者sawsawi
相关产品推荐
相关产品推荐

