如何在pyspark中转置Dataframe?

ztmd8pv5  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(504)

如何在pyspark中转置列?我想让列变成行,行变成列。
以下是输入:

  1. +---- +------+-----+-----+
  2. |idx | vin |cur | mean|
  3. +---- +------+-----+-----+
  4. |Type1| D| 5.0 |6.0 |
  5. |Type2| C| null| 7.0 |
  6. +---- +------+-----+-----+

预期结果:

  1. +---- +------+-----+
  2. |idx |Type1 |Type2|
  3. +---- +------+-----+
  4. |vin | D | C |
  5. |cur | 5.0 | null|
  6. |mean | 6.0 | 7.0 |
  7. +-----+------+-----+
qq24tv8q

qq24tv8q1#

你可以合并 stack 取消打印的函数 vin , mean 以及 cur 那么列 pivotidx :

  1. from pyspark.sql import functions as F
  2. df1 = df.selectExpr("idx", "stack(3, 'vin',vin, 'cur',cur, 'mean',mean)") \
  3. .select("idx", "col0", "col1") \
  4. .groupBy("col0") \
  5. .pivot("idx").agg(F.first("col1")) \
  6. .withColumnRenamed("col0", "idx")
  7. df1.show(truncate=False)
  8. # +----+-----+-----+
  9. # |idx |Type1|Type2|
  10. # +----+-----+-----+
  11. # |vin |D |C |
  12. # |mean|6.0 |7.0 |
  13. # |cur |5.0 |null |
  14. # +----+-----+-----+

你一个接一个地应用转换,看看它是如何工作的,以及每个部分都做了些什么。

展开查看全部

相关问题