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

如何使用动态函数在PySpark中转置DataFrame数据

实现DataFrame的动态转置函数

需求说明

给定一个多行多列的Pandas DataFrame,编写一个以DataFrame为输入的动态函数,调用后可自动完成数据转置(例如输入5列3行的DataFrame,输出为3行5列的转置结果)。

示例DataFrame构造

先还原示例中的DataFrame,方便后续测试:

import pandas as pd

data = {
    'Product': ['Banana', 'Carrots', 'Beans', 'Orange', 'Orange', 'Banana', 'Carrots', 'Beans', 'Orange', 'Banana', 'Carrots', 'Beans'],
    'Amount': [1000, 1500, 1600, 2000, 2000, 400, 1200, 1500, 4000, 2000, 2000, 2000],
    'Country': ['USA', 'USA', 'USA', 'USA', 'USA', 'China', 'China', 'China', 'China', 'Canada', 'Canada', 'Mexico']
}
df = pd.DataFrame(data)

动态转置函数实现

利用Pandas内置的转置功能,实现适配任意行列数的动态转置函数:

def transpose_df(input_df):
    # 执行转置并重置索引,让结果结构更规整
    transposed_df = input_df.T.reset_index()
    # 自定义列名提升可读性,可按需调整命名规则
    transposed_df.columns = ['Original_Columns'] + [f'Row_{i+1}' for i in range(len(transposed_df.columns)-1)]
    return transposed_df

函数调用示例

1. 示例DataFrame转置测试

transposed_result = transpose_df(df)
print(transposed_result)

输出结果(截取核心部分):

Original_Columns    Row_1    Row_2    Row_3    Row_4    Row_5    Row_6    Row_7    Row_8    Row_9   Row_10   Row_11   Row_12
0          Product  Banana  Carrots    Beans   Orange   Orange   Banana  Carrots    Beans   Orange   Banana  Carrots    Beans
1           Amount    1000     1500     1600     2000     2000      400     1200     1500     4000     2000     2000     2000
2          Country     USA      USA      USA      USA      USA    China    China    China    China   Canada   Canada   Mexico

2. 5列3行DataFrame转置测试

构造测试用的5列3行DataFrame:

test_df = pd.DataFrame({
    'Col1': [1,2,3],
    'Col2': [4,5,6],
    'Col3': [7,8,9],
    'Col4': [10,11,12],
    'Col5': [13,14,15]
})

# 转置后得到3行5列的结果
print(transpose_df(test_df))

输出:

Original_Columns  Row_1  Row_2  Row_3
0             Col1      1      2      3
1             Col2      4      5      6
2             Col3      7      8      9
3             Col4     10     11     12
4             Col5     13     14     15

补充说明

  • 函数核心依赖Pandas的T属性(与transpose()方法功能一致)完成转置
  • reset_index()用于将原DataFrame的列名转为新表的普通列,避免索引混乱
  • 自定义列名可根据实际需求修改,比如替换为业务场景相关的命名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:45:26