Как подсчитать числа априорных повторов в таблице уникальных значений?

Исходные данные: два столбца повторяющихся значений, например:

id Event
1001 AA
1001 BB
1001 AA
1002 AA
1003 BB
1003 CC

Нужно получить таблицу уникальных значений с числом повторений, например:

id AA BB CC
1001 2 1 1
1002 1 0 0
1003 0 1 1

Пытался решить в Excel Python сводными таблицами.
В Python DataFrame.pivot требуется values, которое и нужно автоматически рассчитать.

Какие еще есть функции?


Ответы (2 шт):

Автор решения: strawdog

при df:

     id Event
0  1001    AA
1  1001    BB
2  1001    AA
3  1002    AA
4  1003    BB
5  1003    CC

используем pandas pivot_table:

import pandas as pd

df["count"] = df["Event"]
res = pd.pivot_table(df, values="count", index="id", columns="Event", aggfunc="count").fillna(0).astype("int")

тогда res будет:

Event  AA  BB  CC
id               
1001    2   1   0
1002    1   0   0
1003    0   1   1
→ Ссылка
Автор решения: MaxU
import pandas as pd

df = pd.read_excel(filename, usecols=["id", "Event"])
res = df.assign(x=1).pivot_table(index="id", columns="Event", values="x", fill_value=0)
res.to_excel("result.xlsx")

однострочник:

(pd
 .read_excel(filename, usecols=["id", "Event"])
 .assign(x=1).pivot_table(index="id", columns="Event", values="x", fill_value=0)
 .to_excel("result.xlsx"))
→ Ссылка