преобразовать строки и столбцы без использования панд - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть датафрейм только с двумя столбцами. Я пытаюсь преобразовать значения одного столбца в заголовки, а другой столбец в его значения. пытался использовать pivot и все, но он не работает.

df_pivot_test = sc.parallelize([('a',1), ('b',1), ('c',2), ('d',2), ('e',10)]).toDF(["id","score"])

id  score
a   1
b   1
c   3
d   6
e   10

пытаясь преобразовать это в

a   b   c   d   e
1   1   3   6   10

какие-либо мысли о том, как мы можем это сделать? Я не хочу использовать .toPandas (), мы можем достичь этого путем преобразования в pandas dataframe. но у нас есть миллиарды строк, из-за которых у нас будут проблемы с памятью.

1 Ответ

1 голос
/ 30 сентября 2019

Вы можете сделать pivot and groupBy, чтобы получить желаемый результат.

Try with this method:

from pyspark.sql.functions import *

# with literal value in groupby clause

df_pivot_test.groupBy(lit(1)).pivot("id").agg(expr("first(score)")).drop("1").show()

(or)

# without any column in groupby clause
df_pivot_test.groupBy().pivot("id").agg(expr("first(score)")).show()

Result:

+---+---+---+---+---+
|  a|  b|  c|  d|  e|
+---+---+---+---+---+
|  1|  1|  2|  2| 10|
+---+---+---+---+---+
...