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

Python:从另一DataFrame查找匹配元素并返回对应ID的实现方案问询

解决方案

我来一步步带你实现这个需求,用pandas就能轻松搞定:

首先,先导入pandas并创建示例数据(方便你直接测试验证):

import pandas as pd

# 创建订单DataFrame
orders = pd.DataFrame({
    'items': ['curd,vada,rice', 'idly,sambar'],
    'chat_id': ['74374374h4473', '7949759459h34']
})

# 创建菜单DataFrame
menu = pd.DataFrame({
    'id': [1, 2, 3, 4, 5],
    'items': ['idly', 'vada', 'rice', 'curd', 'sambar']
})

接下来是核心处理步骤:

  1. 拆分订单中的多菜品字段:用str.split(',')把逗号分隔的菜品字符串拆成列表,再用explode()把列表展开成单独的行,这样每个菜品都会对应一条原有的chat_id记录:
orders_expanded = orders.assign(items=orders['items'].str.split(',')).explode('items')

这一步处理后,orders_expanded的结构会变成:

itemschat_id
curd74374374h4473
vada74374374h4473
rice74374374h4473
idly7949759459h34
sambar7949759459h34
  1. 关联菜单获取菜品ID:用merge()方法,根据items字段将两个DataFrame关联,最后只保留我们需要的chat_id和id列:
result = orders_expanded.merge(menu, on='items')[['chat_id', 'id']]

最后输出结果就是你预期的格式了:

print(result)

输出内容:

chat_id  id
0  74374374h4473   4
1  74374374h4473   2
2  74374374h4473   3
3  7949759459h34   1
4  7949759459h34   5

如果你的实际数据量较大也不用担心,这个方案用的是pandas的矢量化操作,比手动循环高效得多。

内容的提问来源于stack exchange,提问作者HA the data scientist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:47:33