当df1[‘Column 1’]包含df2[‘Column 1’]时,如何用df2[‘Column 2’]中的值替换df1[‘Column 1’]中的子字符串?

df1:

Column1
A&O Inc.
HP Canada

DF2:

Column1 Column2
A&O Allen & Overy
HP Hewlett Packard

预期输出:

Column1
Allen & Overy Inc.
Hewlett Packard Canada

推荐答案

你可以创建一个正则表达式来使用str.replace和一个函数作为替换来获取匹配的名称:

import re

s = df2.set_index('Column1')['Column2']

pattern = re.compile('|'.join(map(re.escape, s.index)))
# re.compile(r'A\&O|HP', re.UNICODE)

df1['out'] = df1['Column1'].str.replace(pattern, lambda m: s.get(m.group(0)),
                                        regex=True)

或者,如果性能不重要,您也可以使用replace(请注意,这将遍历所有可能的替换,因此对于许多值都很慢):

s = df2.set_index('Column1')['Column2']

df1['out'] = df1['Column1'].replace(s.to_dict(), regex=True)

-输出df1:

     Column1                     out
0   A&O Inc.      Allen & Overy Inc.
1  HP Canada  Hewlett Packard Canada

Python相关问答推荐

Snap 7- read_Area用于类似地址的变量

将numpy数组与空数组相加

具有2D功能的Python十六进制图

PyQt5如何将pyuic 5生成的Python类添加到QStackedWidget中?

code _tkinter. Tcl错误:窗口路径名称错误.!按钮4"

如何根据另一列值用字典中的值替换列值

更改matplotlib彩色条的字体并勾选标签?

try 与gemini-pro进行多轮聊天时出错

如何检测背景有噪的图像中的正方形

rame中不兼容的d类型

如何从具有不同len的列表字典中创建摘要表?

avxspan与pandas period_range

在Python argparse包中添加formatter_class MetavarTypeHelpFormatter时, - help不再工作""""

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

Pandas Loc Select 到NaN和值列表

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

如何更改groupby作用域以找到满足掩码条件的第一个值?

如何在达到end_time时自动将状态字段从1更改为0

未调用自定义JSON编码器

并行编程:同步进程