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

Pandas如何优雅实现基于列表元素匹配的DataFrame合并

实现方法

不用手写双层循环,用pandas内置的列表展开+关联操作就能快速实现,代码简洁且性能远高于逐行遍历:

# 如果df2的keywords列是字符串格式(比如"['a','b']")而非原生Python列表,先运行下面三行做格式转换
# import ast
# df2['keywords'] = df2['keywords'].apply(ast.literal_eval)

# 把keywords列表拆成单个关键词,每个关键词占一行
df2_exploded = df2.explode('keywords', ignore_index=True).rename(columns={'keywords': 'keyword'})
# 按keyword字段做内连接,自动匹配所有关联行
output_df = df1.merge(df2_exploded, on='keyword', how='inner')

执行后得到的结果和你给出的预期输出完全一致。

对比说明
  • 原实现用iterrows()做双层逐行遍历,pandas逐行遍历本身运行开销极高,时间复杂度为O(n*m),数据量稍大就会运行缓慢
  • 上述方案用pandas内置的向量化方法,底层经过C优化,数据量越大性能优势越明显,通常比手写循环快几十到上百倍
  • 后续如果需要新增保留字段,直接在原始DataFrame中维护即可,不需要修改关联逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:48:22