Сводка и Cumcount в PYSPARK - PullRequest
       41

Сводка и Cumcount в PYSPARK

0 голосов
/ 27 апреля 2020

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

Borough, Neighborhood, Count, Row_Number
B, UES, 5, 1
B, MID, 10, 2
B, UWS, 4, 3
BR, EV, 1, 1
BR, WB, 4, 2 
BR, MID, 5, 3

Я хочу преобразовать его в нечто вроде этого:

Borough, Neighborhood_1, Count_1, Neighborhood_2, Count_2, Neighborhood_3, Count_3
B, UES, 5, MID, 10, UWS, 4
BR, EV, 1, WB, 4, MID, 5

Вот что я мог бы придумать:

df.groupBy('Borough').pivot('Neighborhood')

Но я продолжаю получать ошибки. Кто-нибудь может указать на ошибку?

1 Ответ

0 голосов
/ 27 апреля 2020

Вот как вы должны это сделать.

df = df.withColumn("row_num", F.row_number(Window.partitionBy("Borough").orderBy("Count")))
df.withColumn("neighbour_dummy", F.concat_ws("_", F.lit("Neighbour"), F.col("row_num"))

pivot_neigh = df.groupBy("Borough").pivot("neighbour_dummy").agg(F.first("Neighbourhood"))

Аналогичным образом сделайте это для столбца Count, а затем соедините два набора данных. Вы можете обратиться сюда, чтобы узнать, как Window, Concat_WS, et c. работы - https://www.youtube.com/playlist?list=PLI57HEydB_p7TogaXyArlE1ZNw4sgHmsd

...