Подсчитать количество элементов, удовлетворяющих дополнительному условию в другом столбце при группировании в pyspark - PullRequest
0 голосов
/ 18 декабря 2018

Следующая команда pyspark

df = dataFrame.groupBy("URL_short").count().select("URL_short", col("count").alias("NumOfReqs"))

создала следующий результат.

|URL_short |NumOfReqs|
+-----------------------------------------------------------------------------------------+---------+
|http1     | 500    |
|http4     | 500    |
|http2     | 500    |
|http3     | 500    |

В исходном кадре данных dataFrame у меня есть столбец с именем success, тип которого - текст.Значение может быть "true" или "false".

В результате я хотел бы иметь дополнительный столбец с именем, например, NumOfSuccess, в котором подсчитываются элементы, имеющие запись "true" в исходном столбце success на категорию URL_short.

Как я могу изменить

df = dataFrame.groupBy("URL_short").count().select("URL_short", col("count").alias("NumOfReqs"))

для вывода также столбца, удовлетворяющего условию success == "true per URL_short` категории?

1 Ответ

0 голосов
/ 18 декабря 2018

Один из способов сделать это - добавить другое агрегирующее выражение (также превратить count в выражение agg):

import pyspark.sql.functions as f

dataFrame.groupBy("URL_short").agg(
  f.count('*').alias('NumOfReqs'), 
  f.sum(f.when(f.col('success'), 1).otherwise(0)).alias('CountOfSuccess')
).show()

Обратите внимание, что предполагается, что ваш столбец success имеет логический тип, если онстрока, измените выражение на f.sum(f.when(f.col('success') == 'true', 1).otherwise(0)).alias('CountOfSuccess')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...