我有一个像这样的数据框
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'}]}
我现在可以进一步修改这本字典,但是有更直接的方法吗?
最佳答案
你已经很接近了,只需要在 apply
中使用 dict
和 values
进行字典:
print(df.groupby('keyid')['keys', 'vals'].apply(lambda x: dict(x.values)).to_dict())
{'d1': {'key1': 'val1', 'key2': 'val2'},
'd2': {'key1': 'val3', 'key2': 'val4'}}
关于python - groupby 一列并将剩余列转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870317/