我有一个数据框,我想在其中为数据集中的组添加唯一的ID
id | zip | name
1 | 30000 | abc
2 | 30000 | abc
3 | 40000 | kal
4 | 50000 | res
5 | 50000 | res
6 | 60000 | dei
7 | 60000 | dei
而且我想为数据集中的每个zip生成一个通用的UUID
,以便它看起来像喜欢
id | zip | name | groupguid
1 | 30000 | abc | FA4E4089-C3ED-41C4-B88C-000C6673A692
2 | 30000 | abc | FA4E4089-C3ED-41C4-B88C-000C6673A692
3 | 40000 | kal | 860BDE48-9B4A-450E-BD68-001B90E8F977
4 | 50000 | res | EAE3AFB7-412D-437E-8A15-001BE52373A3
5 | 50000 | res | EAE3AFB7-412D-437E-8A15-001BE52373A3
6 | 60000 | dei | AA8F1518-7F35-4E76-A550-002CF9C455AB
7 | 60000 | dei | AA8F1518-7F35-4E76-A550-002CF9C455AB
有人知道如何实现吗?
使用Spark SQL的一种方法:
df.createOrReplaceTempView("df_table")
spark.sql("""
SELECT *
, first(uuid()) over (partition by zip) as groupguid
FROM df_table
""").show
或仅使用selectExpr:
df.selectExpr(
"*"
, "first(uuid()) over (partition by zip) as groupguid"
).show