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

如何用Python Pandas实现按列表元素匹配合并DataFrame并拼接产品名?

如何实现列表类型ID与产品表关联并拼接产品名称?

针对你这个需求,我给你分享两种用Pandas实现的实用方法,都是日常处理这类嵌套列表关联场景的常用思路:

方法一:映射字典 + apply 快速转换

这种方法适合数据量不大的场景,步骤清晰直接:

  1. 先从product表构建ID到产品名称的映射字典,方便快速查找
  2. 对sales表的ProductId列应用自定义函数,把每个ID列表转换成对应的产品名称拼接字符串
  3. 调整列名得到最终结果
import pandas as pd

# 模拟你的原始数据
sales = pd.DataFrame({
    'ProductId': [[1], [2], [3,4,5], [6,7,8]],
    'Sales': ['$199', '$299', '$399', '$499']
})

product = pd.DataFrame({
    'ID': [1,2,3,4,5,6,7,8],
    'Product': ['A','B','C','D','E','F','G','H']
})

# 步骤1:构建ID到Product的映射字典
id_product_map = product.set_index('ID')['Product'].to_dict()

# 步骤2:处理ProductId列,拼接产品名称
sales['Product'] = sales['ProductId'].apply(
    lambda x: ','.join([id_product_map[id] for id in x])
)

# 步骤3:保留需要的列并调整顺序
sales_product = sales[['Product', 'Sales']].reset_index(drop=True)
print(sales_product)

运行后就能得到你想要的结果:

Product  Sales
0        A  $199
1        B  $299
2  C,D,E  $399
3  F,G,H  $499

方法二:explode 展开列表 + 关联 + 分组聚合

这种方法更适合数据量大或者需要更严谨关联校验的场景,能自动处理可能的ID不匹配问题:

  1. 用explode把sales表的ProductId列表拆分成多行,每个ID占一行
  2. 和product表关联,匹配对应的产品名称
  3. 按原始的行索引分组,把同一组的产品名称用逗号拼接,再关联回Sales字段
import pandas as pd

# 模拟原始数据
sales = pd.DataFrame({
    'ProductId': [[1], [2], [3,4,5], [6,7,8]],
    'Sales': ['$199', '$299', '$399', '$499']
})

product = pd.DataFrame({
    'ID': [1,2,3,4,5,6,7,8],
    'Product': ['A','B','C','D','E','F','G','H']
})

# 步骤1:展开ProductId列表,保留原始索引
sales_exploded = sales.explode('ProductId', ignore_index=False)

# 步骤2:关联product表,匹配产品名称
merged = sales_exploded.merge(
    product, left_on='ProductId', right_on='ID', how='left'
)

# 步骤3:按原始索引分组,拼接产品名称,合并Sales
sales_product = merged.groupby(merged.index).agg(
    Product=('Product', ','.join),
    Sales=('Sales', 'first')
).reset_index(drop=True)

print(sales_product)

这个方法的好处是如果sales里的ID在product表中不存在,会自动填充NaN,方便后续做数据校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:32:48