Я очень, очень плохо знаком с pyspark
.Мой фрейм данных выглядит как -
id value subject
1 75 eng
1 80 his
2 83 math
2 73 science
3 88 eng
Я хочу, чтобы мой фрейм данных -
id eng his math science
1 .49 .51 0 0
2 0 0 .53 .47
3 1 0 0 0
Это означает построчное суммирование, а затем деление на каждую ячейку.Хотите рассчитать% каждой ячейки.
Я сделал следующий код, но он не работает -
from pyspark.sql import functions as F
from pyspark.sql import Window
df = df.withColumn('rank',F.dense_rank().over(Window.orderBy("id","value","subject")))
df.withColumn('combcol',F.concat(F.lit('col_'),df['rank'])).groupby('id').pivot('combcol').agg(F.first('value')).show()