当前是否无法基于字段的唯一值在PySpark数据帧中生成UUID
我知道Pandas可以很容易地做我想要做的事情,但是如果我想实现基于特定列属性为pyspark数据帧的每一行提供唯一的UUID,我该怎么做呢
假设我有一个熊猫数据帧,如下所示:
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
如果名称相同,我想添加一个UUID相同的列。例如,上面的数据框应为:
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
import uuid
for name in df['Name'].unique():
df.loc[df['Name'] == name, 'UUID'] = uuid.uuid4()
我试着到处搜索它,但找不到一个用PySpark做这件事的例子
您实际需要的是应用hash function。应用于相同值的哈希函数将始终输出相同的结果。另一方面,UUID是is simply a 128 bits integer,因此只需应用128位哈希函数并将结果解释为UUID。例如,MD5就是这样一个散列函数
您可以将此新函数应用于数据帧
应用于我得到的示例数据帧
相关问题 更多 >
编程相关推荐