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

如何将行转列并以指定分隔符拼接多行字符串为单个字符串

行转列并拼接多列数据为单字符串的实现方案

需求说明

将数据表按name分组,把type字段的值转为列名,同时将每组内对应type的num、age、dateA(截取日期部分)、DateB(截取日期部分)、PRICE字段用逗号拼接成单个字符串。

原数据表

typenamenumagedateADateBPRICE
AAziz1122012-01-11 00:00:00.0002012-01-11 00:00:00.000129.00
BAziz1342012-01-11 00:00:00.0002012-01-11 00:00:00.000100.00
CAziz0202012-01-11 00:00:00.0002012-01-11 00:00:00.000349.00
DAziz1902012-01-11 00:00:00.0002012-01-11 00:00:00.000222.00

期望结果

nameABCD
Aziz1, 12,2012-01-11,2012-01-11,129.001, 34, 2012-01-11, 2012-01-11, 100.000,20,2012-01-11, 2012-01-11, 349.001,90,2012-01-11, 2012-01-11,222.00

实现方案

1. SQL(以SQL Server为例)

先通过字符串拼接函数合并目标字段,再用PIVOT完成行转列:

SELECT 
    name,
    A, B, C, D
FROM (
    SELECT 
        name,
        type,
        CONCAT(
            num, ', ', 
            age, ', ', 
            CONVERT(VARCHAR(10), dateA, 23), ', ', 
            CONVERT(VARCHAR(10), DateB, 23), ', ', 
            PRICE
        ) AS combined_value
    FROM your_table_name
) AS src
PIVOT (
    MAX(combined_value)
    FOR type IN (A, B, C, D)
) AS pvt;
  • CONVERT(VARCHAR(10), dateA, 23)用于把日期时间格式转为YYYY-MM-DD字符串
  • CONCAT负责拼接字段,可按需调整分隔符
  • PIVOT中用MAX聚合,因为每组每个type仅对应一条数据,聚合结果不受影响

2. Python(使用Pandas库)

通过groupby+agg拼接字段,再用unstack实现行转列:

import pandas as pd

# 构造原数据DataFrame(实际场景可通过read_csv/read_sql读取)
df = pd.DataFrame({
    'type': ['A', 'B', 'C', 'D'],
    'name': ['Aziz', 'Aziz', 'Aziz', 'Aziz'],
    'num': [1, 1, 0, 1],
    'age': [12, 34, 20, 90],
    'dateA': ['2012-01-11 00:00:00.000']*4,
    'DateB': ['2012-01-11 00:00:00.000']*4,
    'PRICE': ['129.00', '100.00', '349.00', '222.00']
})

# 截取日期部分
df['dateA'] = df['dateA'].str.split(' ').str[0]
df['DateB'] = df['DateB'].str.split(' ').str[0]

# 拼接字段
df['combined'] = df.apply(
    lambda row: f"{row['num']}, {row['age']}, {row['dateA']}, {row['DateB']}, {row['PRICE']}",
    axis=1
)

# 行转列
result = df.groupby(['name', 'type'])['combined'].first().unstack()

print(result)
  • 用str.split截取日期部分,也可通过pd.to_datetime格式化日期
  • apply自定义拼接逻辑,可灵活调整分隔符和字段顺序
  • groupby+unstack实现行转列,first用于获取唯一值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:25:22