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

2024-10-01 02:30:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个df,一个用于用户名,另一个用于实名。我想知道如何使用另一个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

有人能帮我吗?提前谢谢


Tags: dataframedfusernamejohnpeterpddf1df2
1条回答
网友
1楼 · 发布于 2024-10-01 02:30:49

您可以使用loc[row, colum]here您可以查看关于loc方法的文档。和Series.str.contain方法选择需要替换为实名的用户名。在我看来,这个解决方案在可读性方面是明确的

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

相关问题 更多 >