【问题标题】:Expand json from all in one to multiple rows将json从一列扩展到多行
【发布时间】:2020-05-26 10:59:29
【问题描述】:

输入 = 来自 pd 数据帧的字典

需要输出 = json 文件,行如下:

{"column1": Value1, "column2": Value1}

{"column1": Value2, "column2": Value2}

mergedfile = {}

for index,row in data.iterrows():
    index=index
    value1=row["column1"]
    value2=row["column2"]
    mergedfile.update({"column1":value1,"column2":value2})
    with open("sample.json", "a") as outfile:  
        json.dump(mergedfile, outfile, sort_keys=True)

print(mergedfile)

我在一行中得到所有输出:{"column1": Value1, "column2": Value1}{"column1": Value2, "column2": Value2}

这种结构的json不能正确读取。

如何在上述需要的输出中分别实现彼此下的行?

【问题讨论】:

  • sample.json 保留在 for 循环中不会在每次迭代时覆盖文件吗?您可以添加示例输入吗?
  • 示例输入只是一个包含两列、两个索引和 4 个值的数据框。如何申请sample.json?
  • 假设data 是一个熊猫数据框,试试这个data.to_dict(orient='records')
  • 谢谢 Sushanth,我之前试过这个,没有结果,还有其他想法吗?
  • 你能从输入数据框中显示几行吗?

标签: python json dataframe


【解决方案1】:

您应该使用json.dumpindent 参数来获得格式良好的输出。

json.dumps(yourJsonOutput, indent=4, sort_keys=True)

更新

这里是代码

import pandas as pd
import json

mergedfile = {}
data = pd.DataFrame([[1, 1.5],[2,2.5]], columns=['int', 'float'])

for index,row in data.iterrows():
  index=index
  value1=row["int"]
  value2=row["float"]
  mergedfile.update({"column1":value1,"column2":value2})
  with open("sample.json", "a") as outfile:  
     d = json.dumps(mergedfile, sort_keys=True)
     outfile.write(str(d)+"\n")
     d = ""

print(mergedfile)

【讨论】:

  • 我们越来越近了,只有这会为一行提供多行显示的括号、值和列,而不是彼此相邻的一行。我们需要 {"column1":"Value1} 完全在第一行然后下一行。
  • 嗨 RJ 对此有什么新想法吗?期待您的支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 2022-10-04
  • 2019-03-29
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多