PySpark: добавление нового столбца на основе столбца с UUID в кадре данных - PullRequest
0 голосов
/ 13 февраля 2019

:)

Я работаю над огромным набором данных (dataframe), который я хочу показать публично, для которого я хочу анонимизировать данные , поэтому вместо пользователей'UUID, я хочу использовать как новый столбец со строкой, такой как:

user1, user2, user3,

, очевидно, соответствующий ID вдругой столбец.

Я не могу использовать их, когда / иначе, так как у меня есть более тысячи различных uuids в df.

Таким образом, конечный результат должен выглядеть примерно так:

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

Я пытаюсь написать функцию, которая увеличивает число в имени пользователя каждый раз, когда изменяется uuid, но если у вас есть другие простые идеи, пожалуйста,дай мне знать!:)

1 Ответ

0 голосов
/ 13 февраля 2019

Возможное решение заключается в следующем:

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.Таким образом, вы увеличиваете имена пользователей, например, user1, user2, user3, ...

Вывод:

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