检查 pandas 列是否包含另一个数据框中的文本并替换值

Check if pandas column contains text in another dataframe and replace values

我有两个 df,一个用于用户名,另一个用于真实姓名。我想知道如何使用其他人的数据检查我的第一个 df 中是否有真实姓名,然后替换它。 例如:

import pandas as pd
df1 = pd.DataFrame({'userName':['peterKing', 'john', 'joe545', 'mary']})
df2 = pd.DataFrame({'realName':['alice','peter', 'john', 'francis', 'joe', 'carol']})

df1
userName
0   peterKing
1   john
2   joe545
3   mary

df2
realName
0   alice
1   peter
2   john
3   francis
4   joe
5   carol

我的代码应该替换 'peterKing' 和 'joe545',因为这些名称出现在我的 df2 中。我尝试使用 pd.contains,但我只能验证名称是否出现。 输出应该是这样的:

userName
0   peter
1   john
2   joe
3   mary

有人可以帮我吗?提前致谢!

您可以使用loc[row, colum]here you can see the documentation about loc method. And Series.str.contain方法select您需要用真实姓名替换的用户名。在我看来,这个解决方案在可读性方面是明确的。

for real_name in df2['realName'].to_list():
  df1.loc[ df1['userName'].str.contains(real_name), 'userName' ] = real_name

输出:

   userName
0   peter
1   john
2   joe
3   mary