pandas 转置python/pyspark Dataframe

y53ybaqx  于 2022-12-16  发布在  Python
关注(0)|答案(1)|浏览(160)

我在excel文件中有以下格式的数据

我想把它转换成下面的格式

我尝试使用以下方法转置数据

pdf = df.toPandas()
df_transposed = pdf.T

但是,没有工作,我得到不正确的结果...任何帮助,请..谢谢

z31licg0

z31licg01#

对于Pandas,pd.melt

import pandas as pd
df = pd.DataFrame({
    'category': [1,2,3,4,5],
    'id1': [5,4,3,3,4],
    'id2': [3,2,4,3,10],
    'id3': [3, 2, 1, 1, 1]
})


   category  id1  id2  id3
0         1    5    3    3
1         2    4    2    2
2         3    3    4    1
3         4    3    3    1
4         5    4   10    1

    
pd.melt(df,id_vars=['category'], value_vars=['id1','id2','id3'],var_name='sequence', value_name='value')

对于pyspark,构造一个由列名及其值组成的结构列,然后分解

df=spark.createDataFrame(df)
df.withColumn('tab', F.array(*[F.struct(lit(x).alias('sequence'), col(x).alias('value')).alias(x) for x in df.columns if x!='category'])).selectExpr('category','inline(tab)').show()

     category sequence  value
0          1      id1      5
1          2      id1      4
2          3      id1      3
3          4      id1      3
4          5      id1      4
5          1      id2      3
6          2      id2      2
7          3      id2      4
8          4      id2      3
9          5      id2     10
10         1      id3      3
11         2      id3      2
12         3      id3      1
13         4      id3      1
14         5      id3      1

相关问题