Как подсчитать числа априорных повторов в таблице уникальных значений?
Исходные данные: два столбца повторяющихся значений, например:
| 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"))