如何在pyspark中连接两个数据帧,其中一个有记录,另一个为空?

如何在pyspark中连接两个数据帧,其中一个有记录,另一个为空?,pyspark,pyspark-dataframes,Pyspark,Pyspark Dataframes,我需要帮助连接两个数据帧,其中一个是空的,另一个有数据。你能告诉我怎么用pyspark做这个吗 df1: +--------------------+----------+---------+ | Programname|Projectnum| Drug| +--------------------+----------+---------+ |Non-Oncology Phar...|SR0480-000|Invokamet| +-------------------

我需要帮助连接两个数据帧,其中一个是空的,另一个有数据。你能告诉我怎么用pyspark做这个吗

df1:

+--------------------+----------+---------+
|         Programname|Projectnum|     Drug|
+--------------------+----------+---------+
|Non-Oncology Phar...|SR0480-000|Invokamet|
+--------------------+----------+---------+

df2:

++
||
++
++
我正在使用的熊猫:

假设df2为空,而df1有一些记录

df2 = pd.concat([df2, df1])
但是如何在pyspark中执行此操作

df1:

+--------------------+----------+---------+
|         Programname|Projectnum|     Drug|
+--------------------+----------+---------+
|Non-Oncology Phar...|SR0480-000|Invokamet|
+--------------------+----------+---------+

df2:

++
||
++
++
您可以使用以下方法:


我尝试了很多选择。有一个选择对我有效

对于concat df2到df1,首先我需要创建与df1相同的df2结构,然后使用
联合
进行Concatation

df2 = sqlContext.createDataFrame(sc.emptyRDD(), df1.schema)
df2 = df2.union(df1)

result:

df2:
+--------------------+----------+---------+
|         Programname|Projectnum|     Drug|
+--------------------+----------+---------+
|Non-Oncology Phar...|SR0480-000|Invokamet|
+--------------------+----------+---------+

为什么不直接执行
df2=df1
?不起作用,因为两个数据帧的列数不同。在Spark中,您只能使用union执行此操作,因此可以创建具有空值的列