【发布时间】:2020-01-30 03:30:39
【问题描述】:
我有两个数据框 df1 和 df2。我正在尝试加入(左加入)
df1:
Name ID Age
AA 1 23
BB 2 49
CC 3 76
DD 4 27
EE 5 43
FF 6 34
GG 7 65
df2:
ID Place
1 Germany
3 Holland
7 India
Final = df1.join(df2, on=['ID'], how='left')
Name ID Age Place
AA 1 23 Germany
BB 2 49 null
CC 3 76 Holland
DD 4 27 null
EE 5 43 null
FF 6 34 null
GG 7 65 India
但如果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
我能想到的解决方案是,一旦join完成,我可以检查Place的值,如果为null,则替换为Name。请让我知道是否有任何其他优雅的解决方案。谢谢。
【问题讨论】:
-
试试这个:
final = df1.merge(df2,on='ID',how='left').assign(Place=lambda x: x['Place'].fillna(x['Name'])) -
对不起,我忘了提到我正在尝试在 pyspark 数据框中执行此操作。
merge和assign不适用于 pyspark 数据框。谢谢。
标签: python pandas dataframe join