【问题标题】:Python DataFrames to JSonPython 数据帧到 JSON
【发布时间】:2017-01-08 17:56:00
【问题描述】:

我想将我的 Python 脚本输出存储为下面的 JSon 格式:

 [{
   "ids": "1",
   "result1": ["1","2","3","4"],
   "result2": ["4","5","6","1"]
}, 
{
  "ids": "2",
  "result1": ["3","4"],
  "result2": ["4","5","6","1"]
}]

我的代码如下

for i in df.id.unique():
    ids = i
    results1 = someFunction(i)
    results2 = someFunction2(i)
    df_result_int = ["ids : %s" %ids , "results1 : %s" %results1, "results2 : %s" %results2]
    df_results.append(df_result_int)

jsonData = json.dumps(df_results)

with open('JSONData.json', 'w') as f:
     json.dump(jsonData, f)

someFunction() 和 someFunction2() 返回一个列表。

提前谢谢你。

【问题讨论】:

    标签: python json dataframe


    【解决方案1】:

    您不应该手动将列表转换为字符串,json.dumps 会为您完成。改用字典。这是一个例子:

    df_results = []
    results1 = [1,1]
    results2 = [2,2]
    df_result_int = {"ids" : 1, "results1" : results1, "results2" : results2}
    df_results.append(df_result_int)
    
    json.dumps(df_results)
    

    这将导致:

    [{"results2": [2, 2], "ids": 1, "results1": [1, 1]}]
    

    【讨论】:

      【解决方案2】:

      有一种用于 pandas 数据帧的方法,可让您将数据帧直接转储到 json 文件中。这里是文档的链接:
      to_json
      你可以使用类似

      df.reset_index().to_json(orient='records')    
      

      其中 df 是您之前进行过某种操作的数据框(例如您希望应用的函数等),它取决于您在 json 文件中想要的信息以及如何排列。

      【讨论】:

      • 感谢您的回复,我尝试使用它,但 reset_index 会导致问题。
      • 您可以删除reset_index() 部分并只保留df.to_json(orient='records') 。但可能另一个答案会更快地为您的案例服务,而无需对您已有的代码进行太多修改,因为我们不知道数据布局......
      猜你喜欢
      • 2019-04-11
      • 2021-08-06
      • 2022-09-27
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2023-03-04
      相关资源
      最近更新 更多