如何在python中生成随机的20位uid(唯一Id)

如何在python中生成随机的20位uid(唯一Id),python,pandas,numpy,uuid,uid,Python,Pandas,Numpy,Uuid,Uid,如何在python中生成随机的20位UID(唯一Id)。我想为数据框中的每一行生成UID。它应该正好是20位,并且应该是唯一的 我使用的是uuid4(),但它会生成32位UID,可以对其进行切片[:21]吗?我不想以后重复这个id 如有任何建议,将不胜感激 我绝对不是Python或Pandas方面的专家,但我对以下几点感到困惑。你可能会发现一些有用的东西: 首先,我尝试使用Numpy,但我达到了上限的最大值: import pandas as pd import numpy as np dat

如何在python中生成随机的20位UID(唯一Id)。我想为数据框中的每一行生成UID。它应该正好是20位,并且应该是唯一的

我使用的是uuid4(),但它会生成32位UID,可以对其进行切片[:21]吗?我不想以后重复这个id


如有任何建议,将不胜感激

我绝对不是
Python
Pandas
方面的专家,但我对以下几点感到困惑。你可能会发现一些有用的东西:


首先,我尝试使用
Numpy
,但我达到了上限的最大值:

import pandas as pd
import numpy as np
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'], 'ID':[0,0,0,0]}
df = pd.DataFrame(data)  
df.ID = np.random.randint(0, 9223372036854775807, len(df.index), np.int64)
df.ID = df.ID.map('{:020d}'.format)
print(df)
结果:

    Name                    ID
0    Tom  03486834039218164118
1   Jack  04374010880686283851
2  Steve  05353371839474377629
3  Ricky  01988404799025990141

然后我尝试了一个自定义函数并应用了:

import pandas as pd
import random
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'], 'ID':[0,0,0,0]}
df = pd.DataFrame(data)

def UniqueID():
    UID = '{:020d}'.format(random.randint(0,99999999999999999999))
    while UniqueID in df.ID.unique():
        UID = '{:020d}'.format(random.randint(0,99999999999999999999))
    return UID

df.ID = df.apply(lambda row: UniqueID(), axis = 1)
print(df)
返回:

    Name                    ID
0    Tom  46160813285603309146
1   Jack  88701982214887715400
2  Steve  50846419997696757412
3  Ricky  00786618836449823720

我认为python中的uuid4()可以工作,只需相应地对其进行切片即可

字符串和整数都可以在UID中工作。数据集中的当前唯一键是什么?值得使用它来根据一些逻辑生成唯一的ID。到目前为止没有唯一的密钥,这就是为什么我打算使用uuid库!那么,到目前为止,您如何识别唯一的记录呢?必须有一些唯一的键(即使是复合键),不是吗?或者我遗漏了一些东西。我的意思是,我很难与一个数据集相关,因为该数据集的所有列中都可能有重复的数据接受我们试图随机创建的唯一id:)