PySpark:在数据帧中添加基于UUID列的新列

2024-05-14 20:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

:)

我正在处理一个巨大的数据集(dataframe),我想公开显示它,为此我希望匿名化数据,所以我不想让用户的UUID,而是像使用一个新列一样使用字符串如下:

user1, user2, user3,

显然对应于另一列中的ID。在

我不能在其他情况下使用它们,因为在df中有一千多个不同的uuids。在

所以最终结果应该是这样的:

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

我试着写一个函数,每当uuid改变时,都会增加用户“name”中的数字,但是如果您还有其他简单的想法,请告诉我!:)


Tags: 数据字符串用户iddataframedfuuid情况
1条回答
网友
1楼 · 发布于 2024-05-14 20:24:15

一种可能的解决方案是:

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()

它获取您的数据帧并创建所有用户的不同列表。然后创建另一列,其中包含字符串“User”和按UUID排序的相应行号。所以你有越来越多的用户名,例如user1,user2,user3,。。。在

输出:

^{pr2}$

相关问题 更多 >

    热门问题