Допустим, у меня есть список событий, которые происходят на разных клавишах.
data = [
{"key": "A", "event": "created"},
{"key": "A", "event": "updated"},
{"key": "A", "event": "updated"},
{"key": "A", "event": "updated"},
{"key": "B", "event": "created"},
{"key": "B", "event": "updated"},
{"key": "B", "event": "updated"},
{"key": "C", "event": "created"},
{"key": "C", "event": "updated"},
{"key": "C", "event": "updated"},
{"key": "C", "event": "updated"},
{"key": "C", "event": "updated"},
{"key": "C", "event": "updated"},
]
df = pandas.DataFrame(data)
Я хотел бы сначала проиндексировать мой DataFrame по ключу, а затем перечисление. Это похоже на простую операцию unstack, но я не могу найти, как это сделать правильно.
Лучшее, что я мог сделать, это
df.set_index("key", append=True).swaplevel(0, 1)
event
key
A 0 created
1 updated
2 updated
3 updated
B 4 created
5 updated
6 updated
C 7 created
8 updated
9 updated
10 updated
11 updated
12 updated
но я ожидаю, что
event
key
A 0 created
1 updated
2 updated
3 updated
B 0 created
1 updated
2 updated
C 0 created
1 updated
2 updated
3 updated
4 updated
5 updated
Я тоже пробовал что-то вроде
df.groupby("key")["key"].count().apply(range).apply(pandas.Series).stack()
но порядок не сохраняется, поэтому я не могу применить результат в качестве индекса. Кроме того, я чувствую, что это излишне для операции, которая выглядит вполне стандартной ...
Есть идеи?