Pandas中替代lookup函数实现跨表匹配填充的高效方法咨询
实现方案
方案1:Series.map()(单字段匹配最优)
这是最适配需求的轻量化实现,全程走pandas向量化逻辑,性能远高于自定义for循环:
# 1. 基于B表构建keyword到frequency的映射Series freq_map = df_B.set_index('keyword')['frequency'] # 2. 对A表name列做映射,缺失值填充0后转为整数 df_A['frequency'] = df_A['name'].map(freq_map).fillna(0).astype('int')
如果B表存在重复keyword,可提前做去重处理,保留需要的条目即可:
df_B = df_B.drop_duplicates(subset='keyword', keep='last')
方案2:merge左连接(适合多字段匹配场景)
如果后续需要同时匹配B表的多个字段,可以用左连接实现:
df_A = df_A.merge( df_B, left_on='name', right_on='keyword', how='left' ).fillna(0).drop(columns='keyword')
两种方案都能完全符合指定匹配规则,10万行级数据下的执行速度是for循环的百倍以上。
内容的提问来源于stack exchange,提问作者chl
相关产品推荐
相关产品推荐

