将python中的数据帧转换为json或dictionary类型的对象



我有类似的数据帧

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}}}

最新更新