Pandas 在pyspark df中用新元素填充空值
我试图找到一种方法来连接两个df,它们之间有一个共同的Pandas 在pyspark df中用新元素填充空值,pandas,dataframe,apache-spark,pyspark,apache-spark-sql,Pandas,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,我试图找到一种方法来连接两个df,它们之间有一个共同的colName,并使用func() 我有两个朋友 DF1: 和DF2: +-------+-------------+ |colName| uuid| +-------+-------------+ | a| 1| | b| 2| +-------+-------------+ 在使用特定的pyspark函数(如DF1.join(DF2,其中(DF1.co
colName
,并使用func()
我有两个朋友
DF1:
和DF2:
+-------+-------------+
|colName| uuid|
+-------+-------------+
| a| 1|
| b| 2|
+-------+-------------+
在使用特定的pyspark函数(如DF1.join(DF2,其中(DF1.colName==DF2.colName))
或df.merge()
之后,我希望获得具有以下值的df
DF1+DF2:
+-------+-------------+
|colName| uuid|
+-------+-------------+
| a| 1|
| b| 2|
| c| null|
| d| null|
+-------+-------------+
然后使用func()
:
预期结果如下:
+-------+-------------+
|colName| uuid|
+-------+-------------+
| a| 1|
| b| 2|
| c| 3|
| d| 4|
+-------+-------------+
如您所见,
DF1
只有colName
,而DF2
有uuid
关联。因此func()
将实际生成一个uuid,并用distinctuuid
填充distinctcolName
。对此,我们将不胜感激。提前感谢。您只需使用uuid
功能即可完成此操作
import pyspark.sql.functions as f
df1.join(df2, ['colName'], 'left') \
.withColumn('uuid', f.coalesce(f.col('uuid'), f.expr('uuid()'))) \
.show(10, False)
+-------+------------------------------------+
|colName|uuid |
+-------+------------------------------------+
|a |1 |
|b |2 |
|c |ad037b01-4be8-40f2-99fc-b7589b2c648c|
|d |e59c9315-b626-4dcf-a80a-e16f08f19a96|
+-------+------------------------------------+
这回答了你的问题吗?
+-------+-------------+
|colName| uuid|
+-------+-------------+
| a| 1|
| b| 2|
| c| 3|
| d| 4|
+-------+-------------+
import pyspark.sql.functions as f
df1.join(df2, ['colName'], 'left') \
.withColumn('uuid', f.coalesce(f.col('uuid'), f.expr('uuid()'))) \
.show(10, False)
+-------+------------------------------------+
|colName|uuid |
+-------+------------------------------------+
|a |1 |
|b |2 |
|c |ad037b01-4be8-40f2-99fc-b7589b2c648c|
|d |e59c9315-b626-4dcf-a80a-e16f08f19a96|
+-------+------------------------------------+