将UUID添加到pandas DF

时间:2016-08-04 16:01:34

标签: python pandas uuid

说我有像这样的pandas DataFrame:

df = pd.DataFrame({'Name': ['John Doe', 'Jane Smith', 'John Doe', 'Jane Smith','Jack Dawson','John Doe']})
df:
        Name
    0   John Doe
    1   Jane Smith
    2   John Doe
    3   Jane Smith
    4   Jack Dawson
    5   John Doe

如果名称相同,我想添加一个与uuids相同的列。例如,上面的DataFrame应该变为:

df:
            Name        UUID
        0   John Doe    6d07cb5f-7faa-4893-9bad-d85d3c192f52
        1   Jane Smith  a709bd1a-5f98-4d29-81a8-09de6e675b56
        2   John Doe    6d07cb5f-7faa-4893-9bad-d85d3c192f52
        3   Jane Smith  a709bd1a-5f98-4d29-81a8-09de6e675b56
        4   Jack Dawson 6a495c95-dd68-4a7c-8109-43c2e32d5d42
        5   John Doe    6d07cb5f-7faa-4893-9bad-d85d3c192f52

应该从uuid.uuid4()函数生成uuid。

我目前的想法是使用groupby(“Name”)。cumcount()来识别哪些行具有相同的名称,哪些行是不同的。然后我创建一个带有cumcount键和uuid值的字典,并使用它将uuids添加到DF。

虽然这样可行,但我想知道是否有更有效的方法来做到这一点?

1 个答案:

答案 0 :(得分:4)

这个怎么样

names = df['Name'].unique()
for name in names:
    df.loc[df['Name'] == name, 'UUID'] = uuid.uuid4()

可以将其缩短为

for name in df['Name'].unique():
    df.loc[df['Name'] == name, 'UUID'] = uuid.uuid4()