Предположим, у меня есть фрейм данных с двумя столбцами: a и b.Теперь я хотел бы иметь счет на пару (a, b) и общий счет для такой, чтобы она имела следующую структуру.
Предположим, у меня есть следующие данные:
$ (a, b) \ in {(1, 1), (1, 2), (2, 3), (3, 4)} $
Тогда я бы хотел получить следующие строки:
$ [1, 2, {1: 1, 2: 1}]], [2, 1, {3: 1}], [3, 1, {4: 1}] $
На словах первая строка выражает тот факт, что всего имеется 2 наблюдения.Одно наблюдение для b, равного 1, и одно наблюдение для b, равного 2. Строка 2 содержит информацию о том, что a = 2 получила одно наблюдение, наблюдение, что b = 3.И третья строка выражает тот факт, что существует одно наблюдение для a = 3, а именно b = 4.
Как я могу сделать это с помощью PySpark?
Я попробовал следующее:
df = df\
.groupBy('a', 'b')\
.agg(
count('*').alias('count')
)\
.groupBy('a')\
.agg(
sum('count').alias('total')
)
df.show()
Но это, очевидно, не работает.Я теряю информацию о количестве на пару.