假设我有一个类似以下的数据框:
A B C D
bar X one 1
bar X two 2
foo Z one 1
foo Z two 2
foo Z three 3
foo Z four 4
我想将其转换为JSON文件:
[{'A': 'bar',
'B': 'X'
'C': ['one', 'two']
'D': ['1', '2']
{'A': 'foo',
'B': 'Z',
'C': ['one', 'two', 'three', 'four'}
'D': ['1', '2', '3', '4'}
]
当然df.to_json(orient='records')
没有用。有没有办法用to_json
执行此操作?或者,我该怎么做?
注意:如果存在歧义,则假设很简单:对于A
的每个值,只有B
的一个值。这样的对对应于保存C
和D
序列的“记录”,其中C
的每个值也只有D
的一个值。
答案 0 :(得分:2)
你可以这样做:
df.groupby(['A', 'B'])\
.agg(tuple)\
.reset_index()\
.to_json(orient='records')
这里的技巧是在聚合步骤中转换为元组而不是直接转到列表(不知何故pandas restricts this)。元组以与列表相同的方式获得json序列化。