PySpark Pandas: групповая идентификация столбца и суммирование двух разных столбцов для создания новой таблицы 2x2 - PullRequest
0 голосов
/ 30 октября 2018

У меня есть следующий пример набора данных:

groupby prevoius    current
A       1           1
A       0           1
A       0           0
A       1           0
A       1           1
A       0           1

Я хочу создать следующую таблицу, суммируя «предыдущий» и «текущий» столбцы.

previous_total   current_total
3                4

Я перепробовал все комбинации groupby с .agg и попытался достичь приведенной выше таблицы, но не смог заставить что-либо успешно работать.

Я также знаю, как это сделать в Python Pandas, но не в Pyspark.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Можно использовать и sum:

from pyspark.sql.functions import sum

df_result = df.select(sum("previous").alias("previous_total"),
                      sum("current").alias("current_total"))

df_result.show()

+--------------+--------------+
|previous_total|current_total)|
+--------------+--------------+
|             3|             4|
+--------------+--------------+
0 голосов
/ 30 октября 2018

Используйте методы sum и groupBy:

>>> df.groupBy().sum().select(col("sum(previous)").alias("previous_total"), col("sum(current)").alias("current_total")).show()
+--------------+--------------+
|previous_total|current_total)|
+--------------+--------------+
|             3|             4|
+--------------+--------------+

Кроме того, вы можете зарегистрировать ваш фрейм данных как временную таблицу и использовать Spark SQL для его запроса, что даст идентичные результаты:

>>> df.registerTempTable("df")
>>> spark.sql("select sum(previous) as previous_total, sum(current) as current_total from df").show()
...