繁体   English   中英

PySpark:基于数据框中具有UUID的列添加新列

[英]PySpark: Add new column based on a column with UUID in a dataframe

:)

我正在处理一个巨大的数据集(数据框),我想公开显示该数据集,我想对该数据进行匿名处理 ,所以我不想像用户使用新的UUID那样使用带有字符串的新列:

用户1,用户2,用户3,

显然对应于另一列中的ID

我不能在其他情况下使用它们,因为df有超过一千种不同的uuids

因此,最终结果应如下所示:

| UUID | User | |uuid1 |user1 | |uuid1 |user1 | |uuid2 |user2 | |uuid3 |user3 |

我尝试编写一个函数,以在每次更改uuid时递增用户“名称”中的数字,但是,如果您还有其他简单的想法,请告诉我! :)

一个可能的解决方案是这样的:

from pyspark.sql.functions import *
df1 = spark.createDataFrame([("uuid1",),("uuid1",),("uuid2",),("uuid3",)], ["UUID"])
df2 = df1.distinct().withColumn("User",concat(lit("User"),\
row_number().over(Window.orderBy("UUID"))))


df1.join(df2,["UUID"]).show()

它采用您的数据框并创建所有用户的独特列表。 然后,在按UUID对列表进行排序之后,将创建另一列,其中包含字符串“ User”和适当的行号。 因此,您的用户名越来越多,例如user1,user2,user3,...

输出:

+-----+-----+
| UUID| User|
+-----+-----+
|uuid3|User3|
|uuid1|User1|
|uuid1|User1|
|uuid2|User2|
+-----+-----+

暂无
暂无

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

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