Вы можете использовать комбинацию pivot_table
и to_dict
dic = (df.pivot_table(columns='name', values=['age','character'], aggfunc=list)
.to_dict('l'))
Out[107]:
{'A': [[10, 15, 20, 25], ['fire', 'water', 'earth', 'air']],
'B': [[10, 7], ['fire', 'air']]}
Если у вашего фрейма данных точно 3 столбца name
, age
, character
, вы можете просто игнорировать values=
параметр
dic = df.pivot_table(columns='name', aggfunc=list).to_dict('l')
Как вы сказали в комментарии, для удаления пробелов необходимо предварительно обработать df
с помощью str.strip
перед вызовом pivot_table
следующим образом
df.update(df.select_dtypes('object').apply(lambda x: x.str.strip()))
dic = df.pivot_table(columns='name', aggfunc=list).to_dict('l')