You need to enable JavaScript to run this app. 如何根据相同公司名拼接对应服务字段的行值为列表?
优惠活动
大模型
产品
解决方案
定价
更多

如何根据相同公司名拼接对应服务字段的行值为列表?

实现思路

核心操作逻辑为按company字段对全表分组,将同一公司下的所有service值聚合为列表,下面分两种常用环境给出可直接运行的实现方案:

方案1:Python Pandas(本地结构化数据处理场景)

  1. 导入依赖并加载/构造原始两列数据
    import pandas as pd
    df = pd.DataFrame({
        "service": ["sequencing", "RNA tests", "Cell tests", "consulting", "DNA tests", "mouse test"],
        "company": ["Fischer", "Fischer", "23andMe", "UCLA", "UCLA", "UCLA"]
    })
    
  2. 执行分组聚合,生成目标格式结果
    result = df.groupby("company", as_index=False, sort=False)["service"].agg(service_list=list)
    
    参数说明:
    • as_index=False:避免把分组字段company转为DataFrame索引,保持普通列的表结构
    • sort=False:保留原始数据中公司的首次出现顺序,避免自动按公司名字母排序打乱输出顺序
  3. 最终输出结构完全匹配预期:
    service_list                           |  company
    ------------------------------------------------- 
    ['sequencing','RNA tests']             |  Fischer
    ['Cell tests']                         |  23andMe
    ['consulting','DNA tests','mouse test']|  UCLA
    

补充调整:

  • 若需要对同组内重复的service值去重,同时保留原始数据里service的出现顺序,可替换聚合逻辑为:
    result = df.groupby("company", as_index=False, sort=False)["service"].agg(
        service_list=lambda s: list(dict.fromkeys(s))
    )
    

方案2:SQL(数据库/数仓处理场景)

如果原始数据存储在数据库、数据仓库中,可使用内置的列表聚合函数实现同等效果:

SELECT
  company,
  collect_list(service) AS service_list
FROM 原始数据表名
GROUP BY company;

注意:不同数据库对聚合函数的命名存在差异,例如PostgreSQL中该函数名为array_agg,Oracle需用对应的数组聚合函数实现列表效果,可根据实际使用的数据库调整函数名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 15:45:02