Pyspark - groupby ([список столбцов]). Agg (счетчик (список столбцов)) - PullRequest
0 голосов
/ 26 февраля 2020

Как мне этого добиться?

from pyspark.sql import functions as F
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)
grouped=df.groupby([col list]).agg(F.count([col list]))

Я читал похожие вопросы по stackoverflow, но не смог найти точного ответа.

Даже если я пытаюсь поставить один столбец

grouped=dfn.groupby('col name').agg(F.count('col name'))

Я получаю -

py4j \ java_collections.py ", строка 500, в конвертировании для элемента в объекте: TypeError: объект 'type' не повторяется

Ссылка на вопрос - Столбец pyspark не повторяется

Я заранее не знаю имен столбцов и должен предоставить список в качестве входных данных для группы с помощью функций agg.

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете просто использовать метод .count() для GroupedData объекта.

Давайте подготовим некоторые данные (я предполагаю, что у вас есть SparkSession объект, доступный в переменной spark)

>>> import pandas as pd
>>>
>>> pdf = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
>>> df = spark.createDataFrame(pdf)
>>> df.show(5)

+------------+-----------+------------+-----------+-------+
|sepal_length|sepal_width|petal_length|petal_width|species|
+------------+-----------+------------+-----------+-------+
|         5.1|        3.5|         1.4|        0.2| setosa|
|         4.9|        3.0|         1.4|        0.2| setosa|
|         4.7|        3.2|         1.3|        0.2| setosa|
|         4.6|        3.1|         1.5|        0.2| setosa|
|         5.0|        3.6|         1.4|        0.2| setosa|
+------------+-----------+------------+-----------+-------+
only showing top 5 rows

Затем просто используйте метод groupBy(*cols) для нужных столбцов в DataFrame.

>>> grouped = df.groupBy(['petal_width', 'species']).count()
>>> grouped.show(5)

+-----------+----------+-----+
|petal_width|   species|count|
+-----------+----------+-----+
|        1.7| virginica|    1|
|        2.2| virginica|    3|
|        1.8| virginica|   11|
|        1.9| virginica|    5|
|        1.5|versicolor|   10|
+-----------+----------+-----+
only showing top 5 rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...