如何在Pandas DataFrame中基于时间序列生成递增唯一Key?
为Pandas DataFrame生成基于循环序列的递增唯一Key列
我来帮你搞定这个需求!你要的是让同一轮从0到4的循环序列对应同一个Key,当序列重置回0时Key自动递增,下面是具体的实现方法:
步骤1:构造示例DataFrame
首先先把你给出的输入数据整理成标准的DataFrame结构,方便后续操作:
import pandas as pd # 按照你的输入构造数据 data = { 'time range': [ '2018-03-04 00:00:06.520', '2018-03-04 00:00:07.130', '2018-03-04 00:00:07.850', '2018-03-04 00:00:08.420', '2018-03-04 00:00:09.210', '2018-03-04 00:00:10.070', '2018-03-04 00:00:10.840', '2018-03-04 00:00:11.230', '2018-03-04 00:00:11.980', '2018-03-04 00:00:12.560', '2018-03-04 00:00:13.120', '2018-03-04 00:00:13.790', '2018-03-04 00:00:14.330', '2018-03-04 00:00:15.280', '2018-03-04 00:00:15.960', '2018-03-04 00:00:16.420', '2018-03-04 00:00:17.090' ], 'sequence': [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3] } df = pd.DataFrame(data)
步骤2:生成Key列的核心逻辑
核心思路是检测序列重置的节点:当当前行的sequence是0,且上一行的sequence不是0时,说明进入了新的一轮。我们通过标记这些节点,再累加标记数来生成Key:
# 标记新轮次的起点:当前为0且上一行不为0 df['new_round'] = (df['sequence'] == 0) & (df['sequence'].shift(1) != 0) # 累加标记数并调整起始值,让Key从1开始 df['Key'] = df['new_round'].cumsum() + 1 # 处理第一行的特殊情况:因为shift(1)后第一行是NaN,手动设置Key为1 df.loc[0, 'Key'] = 1 # 可以删除中间的辅助列 df = df.drop('new_round', axis=1)
查看结果
运行完上面的代码后,打印DataFrame就能得到你想要的输出:
print(df)
输出结果如下:
time range sequence Key 0 2018-03-04 00:00:06.520 0 1 1 2018-03-04 00:00:07.130 0 1 2 2018-03-04 00:00:07.850 1 1 3 2018-03-04 00:00:08.420 1 1 4 2018-03-04 00:00:09.210 2 1 5 2018-03-04 00:00:10.070 2 1 6 2018-03-04 00:00:10.840 3 1 7 2018-03-04 00:00:11.230 3 1 8 2018-03-04 00:00:11.980 4 1 9 2018-03-04 00:00:12.560 4 1 10 2018-03-04 00:00:13.120 0 2 11 2018-03-04 00:00:13.790 0 2 12 2018-03-04 00:00:14.330 1 2 13 2018-03-04 00:00:15.280 1 2 14 2018-03-04 00:00:15.960 2 2 15 2018-03-04 00:00:16.420 2 2 16 2018-03-04 00:00:17.090 3 2
逻辑说明
df['sequence'].shift(1):把序列列向上偏移一行,这样就能对比当前行和上一行的序列值。(df['sequence'] == 0) & (df['sequence'].shift(1) != 0):精准捕捉序列从非0重置为0的时刻,这些时刻就是新Key的起点。cumsum():将标记的True(视为1)累加,每出现一次重置,累加值就加1,再加上1是为了让Key从1开始而非0。- 第一行的
shift(1)结果是NaN,所以需要手动设置它的Key为1,保证第一轮的起始正确。
内容的提问来源于stack exchange,提问作者GrayHash
相关产品推荐
相关产品推荐

