Можно ли сгруппировать блок данных Spark, если в столбце присутствуют не все значения? - PullRequest
0 голосов
/ 10 июня 2018

Например, если у меня есть следующий фрейм данных

val tempDF=Seq(("a",2),("b",1),("a",3)).toDF("letter","value")

scala> tempDF.show()
+------+-----+
|letter|value|
+------+-----+
|     a|    2|
|     b|    1|
|     a|    3|
+------+-----+

и я хочу выполнить операцию groupBy над столбцом letter, но зная, что может быть другая буква c, отсутствуетв столбце letter.Обычно у меня было бы

tempDF.groupBy("letter").sum()

scala> tempDF.groupBy("letter").sum().show()
+------+----------+                                                               
|letter|sum(value)|
+------+----------+
|     a|         5|
|     b|         1|
+------+----------+

, но я хотел бы что-то вроде этого:

+------+----------+                                                             
|letter|sum(value)|
+------+----------+
|     a|         5|
|     b|         1|
|     c|         0|
+------+----------+

Возможно ли это сделать без добавления буквы c в кадр данных?Я имею в виду, что у меня может быть много информационных фреймов в списке, но я не знаю, какие буквы пропущены (если есть) для каждого фрейма данных, вместо этого я знаю весь список букв, которые должны появляться для каждого.

1 Ответ

0 голосов
/ 10 июня 2018

Если вы уже знаете все возможные значения, создайте отдельный (универсальный) набор данных с «значением», равным 0. Затем объедините его с любым tempDF, чтобы добавить пропущенные буквы.Затем выполните groupBy для окончательного набора данных.

...