![](/img/trans.png)
[英]Add new column in Pyspark dataframe based on where condition on other column
[英]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.