基于键值对匹配合并DataFrame的优化方法问询
优化Pandas键值对映射实现方案
核心思路
先将映射表df1转换为**(键, 值)元组到col_4的字典**,实现O(1)快速查询;再对df的col_2列做拆分、匹配、拼接,全程用Pandas原生操作简化流程。
完整实现代码
import pandas as pd # 原始数据 df = pd.DataFrame({'col_1': ['1', '2', '3', '4'], 'col_2': ['a:b,c:d', ':v', 'w:,x:y', 'a:g,h:b,j:'] }) df1 = pd.DataFrame({'col_1': ['a', 'c', '', 'w', 'x', 'a', 'h', 'j','t'], 'col_2': ['b', 'd', 'v', '','y', 'g', 'b', '', 'g'], 'col_3': ['aw', 'rt', 'er', 'aa', 'ey', 'wk', 'oo', 'ri', 'ty'], 'col_4': ['rt', 'yu', 'gq', 'tr', 'ui', 'pi', 'pw', 'pp', 'uu'] }) # 构建映射字典:(col_1值, col_2值) → col_4值 map_dict = df1.set_index(['col_1', 'col_2'])['col_4'].to_dict() # 处理col_2列:拆分键值对→匹配映射→拼接结果 df['col_3'] = df['col_2'].str.split(',') \ .apply(lambda items: ','.join([map_dict.get((item.split(':')[0], item.split(':')[1]), '') for item in items])) # 查看结果 print(df)
方案优势
- 高效查询:映射字典仅构建一次,单条查询时间复杂度为O(1),适配大数据量场景
- 简洁易读:用Pandas原生字符串方法替代繁琐的正则拆分+合并流程
- 兼容空值:自动处理键/值为空的特殊情况(如
:v、w:),准确匹配df1中的对应项
内容的提问来源于stack exchange,提问作者Aayush Gupta
相关产品推荐
相关产品推荐

