我想基于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

我在网上尝试过几种解决方案,比如使用map函数。通过在我使用的字典中旋转df2,但这将导致df1.Name = df1.Name.map(Dictionary)中所有值的nan,如下所示。
Name
Alexs
Maria
Maria
NAN
Coalas

我不知道如何使用if语句来替换df2中存在的语句,并根据df1保留其余语句。
我还试图创建一个带有df2语句的函数,但是失败了。
我怎样才能解决这个问题?

最佳答案

使用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

关于python - 仅当值存在时,才通过vlookup另一个数据框替换列中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48269844/

10-11 06:48