json之将 pandas 数据框写入 json 文件

pengyingh 阅读:160 2025-06-02 22:19:02 评论:0

我有一个小数据框,想转换为 json 文件。我希望 json 文件采用良好的格式(带有缩进等)。另外,我希望数据框的其中一列成为 json 数据的关键。这是一个例子:

输入数据框:

    start_date  Nums  ID     tag 
51 2016-03-13 00:00:00       3110            2  787623 
55 2016-03-17 00:00:00     676754            1  787623 

json 的期望输出格式:[注意:索引 51 和 55 消失了,标记值 78723 已成为 'key']。以下所需的

{ 
          "787623": [{ 
              "start_date": "2016-03-13",  
              "Nums": "3110", 
              "ID": "2" 
           }, { 
              "start_date": "2016-03-17",  
              "Nums": "676754", 
              "ID": "1" 
           }] 
} 

目前,我正在做一个简单的 df.to_json(jsonFile, date_format = 'iso', orient = 'records') 生成一个更紧凑的 json 文件,如下所示:

[{"start_date":"2016-03-13T00:00:00.000Z","Nums":3110,"ID":2,"tag":787623},{"start_date":"2016-03-17T00:00:00.000Z","Nums":676754,"ID":1,"tag":787623}] 

但是,我喜欢格式精美的样式。

感谢任何帮助。

请您参考如下方法:

DataFrame.to_dict() 方法有很多关于字典布局的选项。然后,您可以使用 json 模块函数中的 indent 选项来创建格式良好的字符串。

例子:

d={} 
for tag,group in df.set_index('tag').groupby(level='tag'): 
    d[str(tag)]=group.to_dict(orient='records') 
print(json.dumps(d,indent=1)) 

给予

{ 
 "787623": [ 
  { 
   "ID": 2, 
   "Nums": 3110, 
   "start_date": "2016-03-13" 
  }, 
  { 
   "ID": 1, 
   "Nums": 676754, 
   "start_date": "2016-03-17" 
  } 
 ] 
} 

如果您在标签字段中没有重复条目,则单行即可。


标签:json
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号