У меня есть Dataframe с более чем 2 столбцами (Col1, Col2 и т. Д.), И я хочу сгенерировать Серию, где индексом является Col1, а значения Серии являются словарями, где ключом является Col2 иvalue (of the dict) - вхождения кортежа (Col1, Col2).
Допустим, что кадр данных выглядит примерно так:
Col1 Col2 Col3 ...
0 A b ...
1 B e ...
2 A a ...
3 C a ...
4 A b ...
5 B c ...
6 A e ...
7 B c ...
Требуемый вывод:
A {'a':1,'b':2,'e':1}
B {'c':2,'e':1}
C {'a':1}
Мне удалось это с помощью этого цикла:
for t in my_df['Col1'].unique():
my_series.loc[t] = my_df[my_df['Col1'] == t].groupby('Col2').size().to_json()
, но мне было интересно, есть ли способ сделать это более эффективно с помощью методов панд, без итерации.
Я также пытался сгруппировать с двумя индексами:
my_df.groupby(['Col1','Col2']).size()
>
Col1 Col2
A a 1
b 2
e 1
B c 2
e 1
C a 1
, но не могу найти следующий шаг, чтобы преобразовать результат в Series of dict, как показано выше