:)
我正在处理一个庞大的数据集(数据框),我想公开显示该数据集,因此我想匿名化数据,所以不要让用户的UUID
,我想像新列一样使用
user1,user2,user3
显然对应于另一列中的ID
。
我不能在其他情况下使用它们,因为uuids
中有超过一千种不同的df
。
因此最终结果应如下所示:
| UUID | User |
|uuid1 |user1 |
|uuid1 |user1 |
|uuid2 |user2 |
|uuid3 |user3 |
我尝试编写一个函数,每次更改uuid
时,都会增加用户“名称”中的数字,但是,如果您还有其他简单的想法,请告诉我! :)
答案 0 :(得分:0)
可能的解决方法是:
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|
+-----+-----+