我正在寻找匹配 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
