Python Pyspark dataframe使用默认值左连接
我有两个数据帧df1和df2。我正在尝试加入(左加入) df1: df2: Final=df1.join(df2,on=['ID'],how='left') 但是如果Python Pyspark dataframe使用默认值左连接,python,pandas,dataframe,join,Python,Pandas,Dataframe,Join,我有两个数据帧df1和df2。我正在尝试加入(左加入) df1: df2: Final=df1.join(df2,on=['ID'],how='left') 但是如果Place值为空,我想用Name列值填充Place列 预期产出: Name ID Age Place AA 1 23 Germany BB 2 49 BB CC 3 76 H
Place
值为空,我想用Name
列值填充Place
列
预期产出:
Name ID Age Place
AA 1 23 Germany
BB 2 49 BB
CC 3 76 Holland
DD 4 27 DD
EE 5 43 EE
FF 6 34 FF
GG 7 65 India
我能想到的解决方案是,一旦连接完成,我可以检查
Place
的值,如果值为null,则替换为Name
。请让我知道,如果有任何其他优雅的解决办法。谢谢。是的,谢谢。经过一些搜索后,管理使用,如下面的链接所示
from pyspark.sql.functions import coalesce
df1.withColumn("Place",coalesce(df1.Place,df.Name))
是的,谢谢。经过一些搜索后,管理使用,如下面的链接所示
from pyspark.sql.functions import coalesce
df1.withColumn("Place",coalesce(df1.Place,df.Name))
试试这个:
final=df1.merge(df2,on='ID',how='left')。assign(Place=lambda x:x['Place'])。fillna(x['Name'])
是的,谢谢。很抱歉,我忘了提到我正在pyspark数据帧中尝试这样做<代码>合并和分配
不适用于pyspark数据帧。谢谢。试试这个:final=df1。合并(df2,on='ID',how='left')。分配(Place=lambda x:x['Place'])。填充(x['Name'])
是的,谢谢。很抱歉,我忘了提到我正在pyspark数据帧中尝试这样做<代码>合并和分配
不适用于pyspark数据帧。谢谢
Name ID Age Place
AA 1 23 Germany
BB 2 49 BB
CC 3 76 Holland
DD 4 27 DD
EE 5 43 EE
FF 6 34 FF
GG 7 65 India
from pyspark.sql.functions import coalesce
df1.withColumn("Place",coalesce(df1.Place,df.Name))