Чтобы вычислить частоту каждого значения по идентификатору, мы можем что-то сделать, используя value_counts и groupby.
>>> df = pd.DataFrame({"id":[1,1,1,2,2,2], "col":['a','a','b','a','b','b']})
>>> df
id col
0 1 a
1 1 a
2 1 b
3 2 a
4 2 b
5 2 b
>>> df.groupby('id')['col'].value_counts()
id col
1 a 2
b 1
2 b 2
a 1
Но я хотел бы, чтобы результаты сохранялись в формате словаря, а не серии. Итак, как я могу достичь этого, а также скорость высокая, если у нас есть большой набор данных? Идеальный формат:
id
1 {'a': 2, 'b': 1}
2 {'a': 1, 'b': 2}