繁体   English   中英

如何为 Pandas 数据框中的每个组生成一个 uuid

[英]How do I generate a uuid for each group in a pandas dataframe

我有一个数据框,这样

x.groupby(by='basket').ngroup()
Out[15]: 
0    1
1    3
2    1
3    2
4    0

我想为每个组生成 uuid,因此索引 0 和 2 应该具有相同的 uuid。 有没有一种简单的方法可以做到这一点。 谢谢。

如果有更简洁的方法,基本上相当于以下内容:

y = x.drop_duplicates(subset=['basket'])
y['basket_id'] = y['basket'].apply(lambda x: hashlib.shake_256(json.dumps(sorted(x)).encode('utf-8')).hexdigest(10))
y = y[['basket', 'basket_id']]
x = x.merge(y, how='left', on='basket')

是的,这是可能的:

# generate the uuid
ids = {basket: str(uuid.uuid4()) for basket in x['basket'].unique()}


# map uuid
x['uuid'] = x['basket'].map(ids)

输出:

   basket                                  uuid
0       1  e36436ed-7773-44de-9e53-7618cb18d8de
1       3  9cf6902e-4153-4187-8ff8-004a8ec3d2cc
2       1  e36436ed-7773-44de-9e53-7618cb18d8de
3       2  5fc27664-888e-48d2-b348-d18b0089d704
4       0  667f6055-f6b2-45a6-9022-b91ab421ffad

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM