Pandas 在pyspark 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

我试图找到一种方法来连接两个df,它们之间有一个共同的
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,并用distinct
uuid
填充distinct
colName
。对此,我们将不胜感激。提前感谢。

您只需使用
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|
+-------+------------------------------------+