我有类似的数据帧
data = pd.DataFrame({'col1' :['A','A','A','B','B','C','C','C'], 'col2': ['13','15','17','11','15','12','21','23'], 'col3' : [3,5,8,7,2,5,1,3]},columns= ['col1', 'col2', 'col3'])
print(data)
col1 col2 col3
0 A 13 3
1 A 15 5
2 A 17 8
3 B 11 7
4 B 15 2
5 C 12 5
6 C 21 1
7 C 23 3
我想把这个数据帧转换成
[{"A": {"col2": ["13": 3,"15": 5,"17": 8]},"B": {"col2": ["11": 7,"15": 2]},"C": {"col2": ["12": 5,"21": 1,"23": 3]}}]
我尝试通过"col1"使用groupby,然后将最后两列转换为字典但并没有达到预期的效果。
谢谢你的帮助。
您必须咬紧牙关,在groupby语句中使用lambda。
请注意,lambda的效率不是很高,而且这看起来并不是一个逻辑/正确的json结构。
而是为了回答你的问题。
data.groupby('col1')
.apply(lambda x : {'col2' : dict(zip(x['col2'],x['col3']))}).to_dict()
{'A': {'col2': {'13': 3, '15': 5, '17': 8}},
'B': {'col2': {'11': 7, '15': 2}},
'C': {'col2': {'12': 5, '21': 1, '23': 3}}}