使用 python 生成唯一 ID
Using python to generate unique IDs
我应该如何为一组行分配一个唯一 ID (UID),并在 ID 值突然跳跃的情况下分配一个不同的 UID。例如;将“1”分配给范围从 122 到 125 的 ID 值和“2”的 UID,其中 ID 值范围从 507 到 511 在下面的 table 中。
Name
ID
UID
T1
122
T1
123
T1
124
T1
125
T1
507
T1
508
T1
509
T1
510
T1
511
老实说,我不知道从哪里开始。
你不需要unique id,只需要group id,组是一组具有连续ID的行值。假设 pandas,你可以使用 shift()
来识别连续的值,然后 cumsum()
自动构建一个 group id:
df['UID'] = (df['ID'] != df['ID'].shift() + 1).cumsum()
它给出了预期的结果:
df
Name ID UID
0 T1 122 1
1 T1 123 1
2 T1 124 1
3 T1 125 1
4 T1 507 2
5 T1 508 2
6 T1 509 2
7 T1 510 2
8 T1 511 2
我应该如何为一组行分配一个唯一 ID (UID),并在 ID 值突然跳跃的情况下分配一个不同的 UID。例如;将“1”分配给范围从 122 到 125 的 ID 值和“2”的 UID,其中 ID 值范围从 507 到 511 在下面的 table 中。
Name | ID | UID |
---|---|---|
T1 | 122 | |
T1 | 123 | |
T1 | 124 | |
T1 | 125 | |
T1 | 507 | |
T1 | 508 | |
T1 | 509 | |
T1 | 510 | |
T1 | 511 |
老实说,我不知道从哪里开始。
你不需要unique id,只需要group id,组是一组具有连续ID的行值。假设 pandas,你可以使用 shift()
来识别连续的值,然后 cumsum()
自动构建一个 group id:
df['UID'] = (df['ID'] != df['ID'].shift() + 1).cumsum()
它给出了预期的结果:
df
Name ID UID
0 T1 122 1
1 T1 123 1
2 T1 124 1
3 T1 125 1
4 T1 507 2
5 T1 508 2
6 T1 509 2
7 T1 510 2
8 T1 511 2