Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySpark:基于数据帧中具有UUID的列添加新列_Python_Dataframe_Pyspark_Uuid_Databricks - Fatal编程技术网

Python PySpark:基于数据帧中具有UUID的列添加新列

Python PySpark:基于数据帧中具有UUID的列添加新列,python,dataframe,pyspark,uuid,databricks,Python,Dataframe,Pyspark,Uuid,Databricks,:) 我正在处理一个巨大的数据集(dataframe),我想公开显示它,我想对数据进行匿名化,因此我不想让用户的UUID,而是想像一个新列一样使用字符串: 用户1,用户2,用户3 显然对应于另一列中的ID 当/否则,我不能使用它们,因为我在df中有一千多个不同的uuid 所以最终结果应该是这样的: | UUID |用户| |uuid1 |用户1| |uuid1 |用户1| |uuid2 |用户2| |uuid3 | user3 | 我尝试编写一个函数,每次uuid更改时,都会增加用户“name”

:)

我正在处理一个巨大的数据集(dataframe),我想公开显示它,我想对数据进行匿名化,因此我不想让用户的
UUID
,而是想像一个新列一样使用字符串:

用户1,用户2,用户3

显然对应于另一列中的
ID

当/否则,我不能使用它们,因为我在
df
中有一千多个不同的
uuid

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

| UUID |用户|
|uuid1 |用户1|
|uuid1 |用户1|
|uuid2 |用户2|
|uuid3 | user3 |


我尝试编写一个函数,每次
uuid
更改时,都会增加用户“name”中的数字,但是如果您有任何其他简单的想法,请告诉我!)

一个可能的解决方案是:

从pyspark.sql.functions导入*
df1=spark.createDataFrame([(“uuid1”,),(“uuid1”,),(“uuid2”,),(“uuid3”,)],[“UUID”])
df2=df1.distinct()。带列(“用户”,concat(lit(“用户”)\
行号().over(Window.orderBy(“UUID”))
df1.join(df2,[“UUID”]).show()
它接受您的数据帧并创建一个所有用户的独特列表。然后创建另一列,该列包含字符串“User”和按UUID排序后的相应行号。所以你有越来越多的用户名,例如user1,user2,user3

输出:

+-----+-----+
|UUID |用户|
+-----+-----+
|uuid3 |用户3|
|uuid1 |用户1|
|uuid1 |用户1|
|uuid2 |用户2|
+-----+-----+

一个可能的解决方案是:

从pyspark.sql.functions导入*
df1=spark.createDataFrame([(“uuid1”,),(“uuid1”,),(“uuid2”,),(“uuid3”,)],[“UUID”])
df2=df1.distinct()。带列(“用户”,concat(lit(“用户”)\
行号().over(Window.orderBy(“UUID”))
df1.join(df2,[“UUID”]).show()
它接受您的数据帧并创建一个所有用户的独特列表。然后创建另一列,该列包含字符串“User”和按UUID排序后的相应行号。所以你有越来越多的用户名,例如user1,user2,user3

输出:

+-----+-----+
|UUID |用户|
+-----+-----+
|uuid3 |用户3|
|uuid1 |用户1|
|uuid1 |用户1|
|uuid2 |用户2|
+-----+-----+

您可以仅使用UUID创建一个单独的数据框,并使用
单调递增的id()添加一个新列。
然后返回此新列请发布您的尝试实现,以及初始数据框模式您可以仅使用UUID创建一个单独的数据框,并使用
单调递增的id()添加一个新列
然后加入本专栏请发布您的尝试实现,以及初始数据帧模式,以我将使用的方式实现它,并尽快发布,但这是一个很好的解决方案!!非常感谢。因此,我唯一需要更改的是从原始数据集(df1)获取ID,因此我按照我们讨论的方式(df2)获得了UUID列表。然后,我制作了另一个数据框,将UUID与用户名(df3)连接起来,然后将其连接到原始数据集:)finalDF=df3。连接(df1,[“student_institution_id”])显示(finalDF)我以我将如何使用的方式实现它,并尽快发布,但这是一个很棒的解决方案!!非常感谢。因此,我唯一需要更改的是从原始数据集(df1)获取ID,因此我按照我们讨论的方式(df2)获得了UUID列表。然后,我制作了另一个数据帧,将UUID与用户名(df3)连接起来,然后将其连接到原始数据集:)finalDF=df3.join(df1,[“学生机构id”])display(finalDF)