У меня есть такой фрейм данных
import pandas as pd
df = pd.DataFrame({'keyid': ['d1', 'd1', 'd2', 'd2'],
'keys': ['key1', 'key2', 'key1', 'key2'],
'vals': ['val1', 'val2', 'val3', 'val4']})
keyid keys vals
0 d1 key1 val1
1 d1 key2 val2
2 d2 key1 val3
3 d2 key2 val4
, который я хочу преобразовать в
{'d1': {'key1': 'val1', 'key2': 'val2'},
'd2': {'key1': 'val3', 'key2': 'val4'}}
Ближайшее, что я получил:
print(df.groupby('keyid')['keys', 'vals'].apply(lambda g: g.to_dict(orient='records')).to_dict())
, которое печатает
'd1': [{'keys': 'key1', 'vals': 'val1'}, {'keys': 'key2', 'vals': 'val2'}],
'd2': [{'keys': 'key1', 'vals': 'val3'}, {'keys': 'key2', 'vals': 'val4'}]}
Теперь я могу изменить этот словарь дальше, но есть ли более простой способ сделать это?