仅当该值存在时,才通过 vlookup 另一个数据帧替换列中的值

2023-12-23

我想覆盖我的df1.Name基于映射表的值(df2.Name1, df2.Name2)。然而,并非所有值df1.Name存在于df2.Name1

df1:

Name
Alex
Maria 
Marias
Pandas
Coala

df2:

Name1   Name2
Alex    Alexs
Marias  Maria
Coala   Coalas

预期结果:

Name
Alexs
Maria
Maria
Pandas
Coalas

我在网上尝试了几种解决方案,例如使用地图功能。通过转动df2在我正在使用的字典中df1.Name = df1.Name.map(Dictionary),但这会导致nan对于所有不在其中的值df2如下所示。

Name
Alexs
Maria
Maria
NAN
Coalas

我不知道如何使用 IF 语句来仅替换 df2 中确实存在的语句,并按照 df1 保留其余部分。 我还尝试创建一个函数if声明,但却是一次重大失败。

我该如何解决这个问题?


通过使用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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅当该值存在时,才通过 vlookup 另一个数据帧替换列中的值 的相关文章

随机推荐