swi*_*fty 5 python hash pandas
我想为用户生成一个基于整数的唯一 ID(在我的 df 中)。
假设我有:
index first last dob
0 peter jones 20000101
1 john doe 19870105
2 adam smith 19441212
3 john doe 19870105
4 jenny fast 19640822
Run Code Online (Sandbox Code Playgroud)
我想像这样生成一个 ID 列:
index first last dob id
0 peter jones 20000101 1244821450
1 john doe 19870105 1742118427
2 adam smith 19441212 1841181386
3 john doe 19870105 1742118427
4 jenny fast 19640822 1687411973
Run Code Online (Sandbox Code Playgroud)
10 位 ID,但它基于字段的值(john doe 相同的行值获得相同的 ID)。
我研究了散列、加密、UUID,但找不到与这个特定的非安全用例有太多关系。它只是生成一个内部标识符。
感觉我可能以错误的方式解决这个问题,因为我找不到太多关于它的文献!
谢谢
这是使用 numpy 的一种方法
import numpy as np
np.random.seed(1)
# create a list of unique names
names = df[['first', 'last']].agg(' '.join, 1).unique().tolist()
# generte ids
ids = np.random.randint(low=1e9, high=1e10, size = len(names))
# maps ids to names
maps = {k:v for k,v in zip(names, ids)}
# add new id column
df['id'] = df[['first', 'last']].agg(' '.join, 1).map(maps)
index first last dob id
0 0 peter jones 20000101 9176146523
1 1 john doe 19870105 8292931172
2 2 adam smith 19441212 4108641136
3 3 john doe 19870105 8292931172
4 4 jenny fast 19640822 6385979058
Run Code Online (Sandbox Code Playgroud)