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

R dataframe中如何根据指定列分组将其他列元素合并为列表

Python(pandas 实现)

如果你用Python做数据处理,直接用pandas的分组聚合接口即可:

import pandas as pd

# 构造示例数据,实际使用时直接读取你的源数据即可
df = pd.DataFrame({
    'col1': ['x','x','x','y','y','y'],
    'col2': [1,2,3,1,2,3],
    'col3': [4,5,6,4,5,6]
})

# 按col1分组,其余列聚合为列表
result = df.groupby('col1', as_index=False).agg(list)

输出的result就是你需要的目标表格结构。

SQL 实现

主流新版数据库(MySQL 8.0+、PostgreSQL、SQLite 3.30+等)都支持JSON_ARRAYAGG函数实现该需求:

SELECT 
    col1,
    JSON_ARRAYAGG(col2 ORDER BY col2) AS col2,
    JSON_ARRAYAGG(col3 ORDER BY col3) AS col3
FROM 你的表名
GROUP BY col1;

如果是不支持JSON函数的旧版MySQL,可以用GROUP_CONCAT手动拼接列表格式:

SELECT 
    col1,
    CONCAT('[', GROUP_CONCAT(col2 ORDER BY col2 SEPARATOR ', '), ']') AS col2,
    CONCAT('[', GROUP_CONCAT(col3 ORDER BY col3 SEPARATOR ', '), ']') AS col3
FROM 你的表名
GROUP BY col1;

Excel/Google Sheets 实现

假设你的原始数据A列为col1、B列为col2、C列为col3:

  1. 先提取col1的唯一值到E列,公式:=UNIQUE(A:A)
  2. E2对应行的F列(col2结果)输入公式:="["&TEXTJOIN(", ",TRUE,FILTER(B:B,A:A=E2))&"]
  3. E2对应行的G列(col3结果)输入公式:="["&TEXTJOIN(", ",TRUE,FILTER(C:C,A:A=E2))&"]
  4. 下拉公式填充所有唯一col1行即可,该方法适用于Excel 365及所有版本的Google Sheets。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:09:03