仅当值存在时,通过查找另一个数据帧来替换列中的值

A.P*_*apa 5 python dictionary matching dataframe pandas

我想df1.Name根据(df2.Name1, df2.Name2). 然而,并不是所有的值都df1.Name存在于df2.Name1

df1:

Name
Alex
Maria 
Marias
Pandas
Coala
Run Code Online (Sandbox Code Playgroud)

df2:

Name1   Name2
Alex    Alexs
Marias  Maria
Coala   Coalas
Run Code Online (Sandbox Code Playgroud)

预期结果:

Name
Alexs
Maria
Maria
Pandas
Coalas
Run Code Online (Sandbox Code Playgroud)

我在网上尝试了几种解决方案,例如使用地图功能。通过上交df2我正在使用的字典df1.Name = df1.Name.map(Dictionary),但这将导致nan所有值不符合df2以下要求。

Name
Alexs
Maria
Maria
NAN
Coalas
Run Code Online (Sandbox Code Playgroud)

我不确定如何使用 IF 语句仅替换 df2 中确实存在的语句,并将其余语句保留为 df1。我也尝试用if语句创建一个函数,但失败了。

我该如何解决这个问题?

WeN*_*Ben 7

通过使用 replace

df1.Name.replace(df2.set_index('Name1').Name2.to_dict())
Out[437]: 
0     Alexs
1     Maria
2     Maria
3    Pandas
4    Coalas
Name: Name, dtype: object
Run Code Online (Sandbox Code Playgroud)