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

如何按seq_num聚合行,将code、val字段透视生成目标表格

表格透视转换实现方案

核心实现逻辑

  • 按seq_num字段分组,同一分组内所有行的非code、非val字段取值完全一致,直接取任意一行的对应值留存即可
  • 遍历同分组内的所有行,将code字段的取值作为新列名,对应的val字段取值作为该列在当前seq_num行下的数值
  • 最后按「seq_num + 所有提取的code列 + 其他原有公共字段」的顺序拼接成最终表格

Python Pandas 实现

假设原始数据已读入为DataFrame对象df:

import pandas as pd

# 提取所有公共字段:排除分组键seq_num、透视字段code和val之外的全部字段
common_fields = [col for col in df.columns if col not in ['seq_num', 'code', 'val']]

# 执行透视操作
pivot_df = df.pivot_table(
    index=['seq_num'] + common_fields,
    columns='code',
    values='val',
    aggfunc='first' # 同一seq_num+code组合取值唯一,直接取第一个值即可
).reset_index()

# 可选:调整列顺序匹配需求输出格式
final_cols = ['seq_num'] + df['code'].unique().tolist() + common_fields
pivot_df = pivot_df[final_cols]

SQL 实现

假设原始数据表名为raw_table,固定code值场景下直接用case when聚合:

SELECT 
    seq_num,
    MAX(CASE WHEN code = 'author' THEN val END) AS author,
    MAX(CASE WHEN code = 'book' THEN val END) AS book,
    field1,
    field2,
    field3... -- 所有公共字段直接列出即可
FROM raw_table
GROUP BY seq_num, field1, field2, field3... -- 所有公共字段都放入GROUP BY子句

如果code值不固定需要动态生成列,可根据数据库类型选用对应动态语法:MySQL用预处理语句、PostgreSQL用crosstab函数、Spark SQL用pivot语法均可实现。


前端JavaScript 实现

如果原始数据为前端数组格式,可直接用函数处理:

function pivotRawData(rawData) {
    const seqGroup = {}
    const codeSet = new Set()
    let commonFields = []

    rawData.forEach(row => {
        const seq = row.seq_num
        codeSet.add(row.code)
        // 首次处理当前seq时初始化分组,留存公共字段
        if (!seqGroup[seq]) {
            seqGroup[seq] = { seq_num: seq }
            commonFields = Object.keys(row).filter(k => !['seq_num', 'code', 'val'].includes(k))
            commonFields.forEach(field => seqGroup[seq][field] = row[field])
        }
        // 写入code对应的val值
        seqGroup[seq][row.code] = row.val
    })

    // 按要求顺序返回处理后的对象数组
    const finalColOrder = ['seq_num', ...Array.from(codeSet), ...commonFields]
    return Object.values(seqGroup).map(item => finalColOrder.reduce((res, col) => {
        res[col] = item[col]
        return res
    }, {}))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:01