如何在df1['Column1']包含df2['Column1']时替换子串为df2['Column2']值
DataFrame子串批量替换实现
需求描述
当df1的Column1字段包含df2的Column1字段内容时,将df1['Column1']中的对应子串替换为df2['Column2']的对应值。
输入数据
df1
| Column1 |
|---|
| A&O Inc. |
| HP Canada |
df2
| Column1 | Column2 |
|---|---|
| A&O | Allen & Overy |
| HP | Hewlett Packard |
预期输出
| Column1 |
|---|
| Allen & Overy Inc. |
| Hewlett Packard Canada |
代码实现
使用Pandas的向量化操作完成批量替换,代码如下:
import pandas as pd # 构造输入数据 df1 = pd.DataFrame({'Column1': ['A&O Inc.', 'HP Canada']}) df2 = pd.DataFrame({'Column1': ['A&O', 'HP'], 'Column2': ['Allen & Overy', 'Hewlett Packard']}) # 创建替换映射字典:键为待替换子串,值为目标替换值 replace_dict = df2.set_index('Column1')['Column2'].to_dict() # 执行子串替换 df1['Column1'] = df1['Column1'].replace(replace_dict, regex=True) # 查看结果 print(df1)
关键说明
- 替换字典构建:通过
set_index和to_dict快速将df2转换为符合替换规则的字典,避免手动编写映射关系。 - 正则替换:
regex=True参数让str.replace将字典的键作为子串进行匹配,自动完成所有映射的替换操作,无需逐行循环。 - 效率优势:向量化操作比传统的行循环处理速度快得多,适合处理大规模数据集。
内容的提问来源于stack exchange,提问作者aleafonso
相关产品推荐
相关产品推荐

