Skip to main content
 首页 » 编程设计

python之将 df1 与 df2 匹配并将其替换为索引值(非内部连接)

2025年05月04日20myhome

我正在寻找匹配 df1 中的值并将其替换为 df1 中 df2 的索引。

例如

输入df1

Column1 
Test1 
Test2 
Test1, Test2 

输入df2

Index ColumnA 
0     Test1 
1     Test2 

所以,我期待的最终输出是

输出df1

Column1 
0 
1 
0, 1 

由于性能问题,我不喜欢迭代 df1 中的每一行值并替换,但是是否有可以执行此操作的函数?

请帮我解决这个问题。

请您参考如下方法:

这似乎是一个替换问题;你可以传递一本字典。

df1['Column1'].replace( 
    dict(zip(df2['ColumnA'], df2['Index'].astype(str))), regex=True) 
 
0       0 
1       1 
2    0, 1 
Name: Column1, dtype: object 

如果您需要考虑子字符串(IOW,防止匹配较大字符串的子字符串),您可以为每个模式添加单词边界。

df1 = pd.DataFrame({'Column1': ['Test1', 'Test2', 'Test1, Test2', 'Test12']}) 
df1 
 
        Column1 
0         Test1 
1         Test2 
2  Test1, Test2 
3        Test12 
 
m = {rf'\b{x}\b': str(y) for x, y in zip(df2['ColumnA'], df2['Index'])} 
df1['Column1'].replace(m, regex=True) 
 
0         0 
1         1 
2      0, 1 
3    Test12 
Name: Column1, dtype: object