You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于键值对匹配合并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)

方案优势

  1. 高效查询:映射字典仅构建一次,单条查询时间复杂度为O(1),适配大数据量场景
  2. 简洁易读:用Pandas原生字符串方法替代繁琐的正则拆分+合并流程
  3. 兼容空值:自动处理键/值为空的特殊情况(如:v、w:),准确匹配df1中的对应项

内容的提问来源于stack exchange,提问作者Aayush Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:06:34