如何将数据表列中的取值转置为新的列头?
同分组多值合并到单单元格实现方案
Excel
- 适用Excel 365/2021及以上版本,使用
TEXTJOIN数组公式:
假设原数据A列为分组字段,B列为待合并值字段,目标首个分组值位于D2,对应合并单元格输入:=TEXTJOIN(",",TRUE,IF(A:A=D2,B:B,""))
旧版Excel输入后按Ctrl+Shift+Enter启用数组运算,365版本直接回车即可。 - 旧版Excel可通过辅助列+
VLOOKUP递归拼接,或使用VBA自定义函数实现。
Python(Pandas)
import pandas as pd # 读取数据 df = pd.read_excel("源文件路径.xlsx") # 分组聚合 res = df.groupby("分组列名", as_index=False)["待合并列名"].agg(lambda x: ",".join(x.astype(str))) # 导出结果 res.to_excel("输出文件路径.xlsx", index=False)
数据库SQL
- MySQL:
SELECT 分组列, GROUP_CONCAT(待合并列 SEPARATOR ',') AS 合并后列 FROM 表名 GROUP BY 分组列; - PostgreSQL:
SELECT 分组列, STRING_AGG(待合并列::TEXT, ',') AS 合并后列 FROM 表名 GROUP BY 分组列; - Hive/Spark SQL:
SELECT 分组列, CONCAT_WS(',', COLLECT_LIST(待合并列)) AS 合并后列 FROM 表名 GROUP BY 分组列;
内容的提问来源于stack exchange,提问作者Andres Green
相关产品推荐
相关产品推荐

