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

如何在Scala Spark中固定前两列并转置其余列

如何对单行DataFrame执行指定列的Unpivot操作

问题描述

我有一个单行的DataFrame,值的类型包括string、int、bool、array:

原DataFrame结构:

col1col2col3col4col5
val1val2val3val4val5

希望转换为如下结构:

col1col2Columnsvalues
val1val2col3val3
val1val2col4val4
val1val2col5val5

要求前两列保持原样,其余列执行unpivot操作。

解决方案

使用Pandas的melt()方法即可实现需求,通过参数指定保留列和新列名称,同时兼容所有数据类型。

代码示例

import pandas as pd
import numpy as np

# 创建包含多种数据类型的示例DataFrame
df = pd.DataFrame({
    'col1': ['val1'],
    'col2': ['val2'],
    'col3': [100],  # int类型
    'col4': [True], # bool类型
    'col5': [np.array([1,2,3])] # array类型
})

# 执行unpivot转换
unpivoted_df = df.melt(
    id_vars=['col1', 'col2'],
    var_name='Columns',
    value_name='values'
)

print(unpivoted_df)

输出结果

col1  col2 Columns    values
0  val1  val2    col3       100
1  val1  val2    col4      True
2  val1  val2    col5  [1, 2, 3]

参数说明

  • id_vars:指定需要保持不变的列(此处为col1、col2)
  • var_name:设置存储原列名的新列名称(此处为'Columns')
  • value_name:设置存储原列值的新列名称(此处为'values')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:35:21