首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pandas to json with key

pandas to json with key
EN

Stack Overflow用户
提问于 2019-02-28 20:46:46
回答 1查看 75关注 0票数 2

我想创建一个带有密钥的json dict。

代码语言:javascript
运行
复制
df = pd.DataFrame({'a':list('ABCAB'),
                   'b':[4,5,4,5,10],
                   'c':[7,8,9,5,10]})

df.set_index('a').to_json(orient='records')
print(d)

这将创建一个json字典,如下所示:[{"b":4,"c":7},{"b":5,"c":8},{"b":4,"c":9},{"b":5,"c":5},{"b":10,"c":10}]

然而,我正在努力获得我想要的方式,我最好有一个json字典,它的关键字是这样的:["A":[{"b":4,"c":7}, {"b":5,"c":5}],"B": [{"b":5,"c":8},{"b":10,"c":10}], "C": [{"b":4,"c":9}]]

EN

Stack Overflow用户

回答已采纳

发布于 2019-02-28 20:49:10

使用带有applygroupby和带有指定列名的lambda函数,最后调用Series.to_json

代码语言:javascript
运行
复制
d = df.groupby('a')['b','c'].apply(lambda x: x.to_dict('r')).to_json()
print(d)
{"A":[{"b":4,"c":7},{"b":5,"c":5}],
 "B":[{"b":5,"c":8},{"b":10,"c":10}],
 "C":[{"b":4,"c":9}]}

更动态的解决方案是通过Index.difference获取列名

代码语言:javascript
运行
复制
cols = df.columns.difference(['a'])
d = df.groupby('a')[cols].apply(lambda x: x.to_dict('r')).to_json()
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54926110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档