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

如何提取数据列唯一值并将对应行数据合并至同一行

按Item分组合并Value值的实现方案

这个需求的核心逻辑是对Item列做去重分组,将同组内的所有Value值用指定分隔符拼接为单个字符串,以下是不同常用工具下的可直接复用的实现方法:

  • Excel/WPS 表格实现

    • 高版本(365/2021及以上):先将Item列复制到空白列,通过「数据」选项卡的「删除重复值」功能得到A、B、C三个唯一Item值。假设原始数据的Item在A列、Value在B列,数据范围为A2:B9,去重后的Item在D列,在E2单元格输入公式=TEXTJOIN(",",TRUE,IF($A$2:$A$9=D2,$B$2:$B$9,"")),365版本直接回车即可,旧版本按Ctrl+Shift+Enter触发数组计算,下拉公式就能得到所有拼接结果。
    • 低版本无TEXTJOIN函数:用Power Query零代码实现,选中原始数据区域,点击「数据」-「从表格/区域」加载到PQ编辑器,选中Item列后点击「分组依据」,新列命名为Value,操作选择「所有行」,之后添加自定义列,输入公式Text.Combine([Value][Value], ","),删除多余辅助列后将结果上载回工作表即可。
  • Python pandas 实现
    读入数据后直接调用分组聚合方法即可,示例代码如下:

    import pandas as pd
    
    # 示例数据集,实际使用时替换为pd.read_excel()/pd.read_csv()等读文件代码
    df = pd.DataFrame({
        'Item': ['A','A','A','B','B','B','C','C'],
        'Value': [1,2,3,1,2,3,1,2]
    })
    
    # 分组按逗号拼接Value
    res = df.groupby('Item', as_index=False)['Value'].apply(lambda x: ','.join(map(str, x)))
    

    运行后输出的res就是目标格式的结果,如果Value列本身是字符串类型,可以去掉map(str, )的转换逻辑。

  • SQL 实现
    不同数据库的字符串聚合函数略有区别,对应写法如下:

    • MySQL/MariaDB:用内置GROUP_CONCAT函数
      SELECT
          Item,
          GROUP_CONCAT(Value SEPARATOR ',') AS Value
      FROM 你的表名
      GROUP BY Item;
      
    • PostgreSQL:用STRING_AGG函数,可直接指定排序规则
      SELECT
          Item,
          STRING_AGG(Value::text, ',' ORDER BY Value) AS Value
      FROM 你的表名
      GROUP BY Item;
      
    • SQL Server 2017及以上版本:用STRING_AGG函数
      SELECT Item, STRING_AGG(Value, ',') AS Value
      FROM 你的表名
      GROUP BY Item;
      

注意:如果需要Value按固定顺序拼接,在所有方法里都可以提前对原始数据按Value列排序后再做聚合,避免拼接顺序不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:09:18