百万行Pandas DataFrame单列多值替换高效实现方法咨询
高效实现方案
核心逻辑
优先预生成映射字典,再通过预编译的正则批量匹配替换,全程调用Pandas原生向量化操作,避免Python层循环,性能远高于拆分合并、逐行映射等方案。
代码实现
import pandas as pd import re # 1. 从DF2生成映射字典 map_dict = df2.set_index('Col_Name_X')['Col_Name_Y'].to_dict() # 2. 预编译正则匹配模式,匹配所有需要替换的键 pattern = re.compile('|'.join(map_dict.keys())) # 3. 批量替换(如果DF1是Series类型,直接调用对应Series变量的str.replace即可) df1['Col_Name_1'] = df1['Col_Name_1'].str.replace( pattern, lambda match: map_dict[match.group()], regex=True )
效果验证
用你提供的样例数据执行后,输出结果如下:
Col_Name_1 0 Paris, London 1 London 2 Paris, Mexico 3 London, Mexico
性能说明
该方案没有额外的内存开销,也不会产生中间冗余数据,处理100万行数据通常在30秒内即可完成,CPU和内存占用远低于你之前尝试的拆分合并方案。
内容的提问来源于stack exchange,提问作者user16313671
相关产品推荐
相关产品推荐

