检查 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
我有两个 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