Пивот в pySpark - PullRequest
       2

Пивот в pySpark

0 голосов
/ 14 декабря 2018

У меня есть фрейм данных:

student_id class score
1 A 6
1 B 7
1 C 8

Я бы хотел разделить оценку class на 3 столбца, чтобы приведенный выше фрейм данных стал:

student_id class_A_score class_B_score class_C_score
1 6 7 8

Идея состоит в том, чтобыконвертировать A B C в 3 столбца.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018
values = [(1,'A',6),(1,'B',7),(1,'C',8)]
df = sqlContext.createDataFrame(values,['student_id','class','score'])
df.show()
+----------+-----+-----+
|student_id|class|score|
+----------+-----+-----+
|         1|    A|    6|
|         1|    B|    7|
|         1|    C|    8|
+----------+-----+-----+
df = df.groupBy(["student_id"]).pivot("class").sum("score")
df.show()
+----------+---+---+---+
|student_id|  A|  B|  C|
+----------+---+---+---+
|         1|  6|  7|  8|
+----------+---+---+---+
0 голосов
/ 14 декабря 2018

Это классический пример пивота.В pyspark, если df является вашим фреймом данных:

new_df = df.groupBy(['student_id']).pivot('class').sum(score)

У Databricks есть очень хорошая иллюстрация этого в https://databricks.com/blog/2016/02/09/reshaping-data-with-pivot-in-apache-spark.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...