簡體   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