来自熊猫数据框的自定义 JSON 格式输出

Posted

技术标签:

【中文标题】来自熊猫数据框的自定义 JSON 格式输出【英文标题】:custom JSON format output from pandas dataframe 【发布时间】:2017-05-27 08:26:58 【问题描述】:

我有一个如下所示的 Pandas DataFrame:

ID | Category | Description | Score
-----------------------------------
1  |    1     | Desc 1      | 20.0
2  |    1     | Desc 2      | 30.0
3  |    1     | Desc 3      | 30.0
4  |    2     | Desc 4      | 50.0
5  |    2     | Desc 5      | 50.0
6  |    3     | Desc 6      | 55.0

从这个 DataFrame 中,我必须得到以下格式的 JSON 输出:


"name": "Category",
"children":             
    [
        
            "name": "1",
            "children": 
            [
                
                "name": "ID: 1",
                "Description": "Desc 1",
                "Score": 20.0
                 
                
                "name": "ID: 2",
                "Description": "Desc 2",
                "Score": 30.0
                 
                
                "name": "ID: 3",
                "Description": "Desc 3",
                "Score": 30.0
                 
            ]
        ,
        
            "name": "2",
            "children": 
            [
                
                "name": "ID: 4",
                "Description": "Desc 4",
                "Score": 50.0
                 
                
                "name": "ID: 5",
                "Description": "Desc 5",
                "Score": 50.0
                 
            ]
        
        
            "name": "3",
            "children": 
            [
                
                "name": "ID: 6",
                "Description": "Desc 6",
                "Score": 55.0
                 
            ]               
        
    ]

"name" 和 "children" 应该如上所示出现(即使它们在 DataFrame 中没有作为列出现)。 我对此并不陌生,对如何获得此输出没有太多想法。我在这里搜索并浏览了几个类似的帖子。 我专门研究了以下帖子:Userdefined Json Format From Pandas DataFrame,这与我想要的类似。这篇文章中提到的答案虽然不起作用。我不知道如何从那里继续获得我想要的输出。 您能否指导我如何实现这一目标?

【问题讨论】:

这可以帮助您入门:df.groupby('Category').apply(lambda g: g.drop('Category', axis=1).to_dict(orient='records')).to_dict() @IanS 感谢您的帮助... 很好,很高兴我能帮上忙! 【参考方案1】:

感谢@IanS 我从你的代码中得到了灵感,我使用下面的 sn-p 来获取我的输出:

cList = []
groupDict = outputDF.groupby('Category').apply(lambda g: g.drop('Category', axis=1).to_dict(orient='records')).to_dict()
for key, value in groupDict.items():
    cList.append(dict(name=str(key)), children=value)
finalJSON = dict(name='Category', children=cList)
finalJSON = json.dumps(finalJSON)
print(finalJSON)

【讨论】:

以上是关于来自熊猫数据框的自定义 JSON 格式输出的主要内容,如果未能解决你的问题,请参考以下文章

来自 Pandas DataFrame 的用户定义的 Json 格式

熊猫数据框到 json 列表格式

来自 MYSQL PDO 的自定义格式 JSON,用于 NVD3.js

Azure 流分析的自定义输出路径

从箭头格式到熊猫数据框的转换是不是会在堆上重复数据?

如何以下拉格式存储数据框的输出