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

如何基于字符串聚合列最简合并两个DataFrames并生成对应定义列

问题:如何合并两个DataFrame得到指定结果?

原始数据

DataFrame(简称DF)

LookupDefinition
AApple
BBanana
CCarrot

DataFrame2(简称DF2)

SNoLookup Values
1['A', 'B']
2['A', 'C']
3['B', 'C']

注:“Lookup Values”列为字符串列表类型。

目标结果

SNoLookup ValuesLookup Definitions
1A, BApple, Banana
2A, CApple, Carrot
3B, CBanana, Carrot

最简实现方案

用Python的pandas库可以快速实现,核心思路是用字典做映射,比传统JOIN更高效简洁:

  1. 先把DF转换成用于映射的字典:
import pandas as pd

# 假设DF和DF2已提前创建好
lookup_map = DF.set_index('Lookup')['Definition'].to_dict()
  1. 直接对DF2做列转换和映射,一步得到结果:
result = DF2.copy()
# 把列表转成逗号分隔的字符串
result['Lookup Values'] = result['Lookup Values'].apply(', '.join)
# 根据映射生成定义列
result['Lookup Definitions'] = result['Lookup Values'].apply(
    lambda x: ', '.join([lookup_map[item.strip()] for item in x.split(',')])
)

或者用更紧凑的链式写法:

lookup_map = DF.set_index('Lookup')['Definition'].to_dict()

result = DF2.assign(
    LookupValues=DF2['Lookup Values'].apply(', '.join),
    LookupDefinitions=DF2['Lookup Values'].apply(
        lambda lst: ', '.join([lookup_map[val] for val in lst])
    )
).rename(columns={'LookupValues': 'Lookup Values', 'LookupDefinitions': 'Lookup Definitions'})

执行完上述代码后,result就是你要的目标DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:33:27