【问题标题】:How to read json file using python pandas?如何使用 python pandas 读取 json 文件?
【发布时间】:2017-10-03 19:57:06
【问题描述】:

我想使用 python pandas 读取 json 文件。文件的每一行都是 JSON 中的一个完整对象。

我正在使用以下版本-

蟒蛇:2.7.6

熊猫:1.19.1

json 文件-

{"id":"111","p_id":"55","name":"aaa","notes":"","childs":[]}
{"id":"222","p_id":"56","name":"bbb","notes":"","childs":[]}
{"id":"333","p_id":"75","name":"ccc","notes":"","childs":[]}
{"id":"444","p_id":"76","name":"ddd","notes":"","childs":["abc","efg","pqr"
,"rtu"]}

我正在使用下面的代码来读取 json 文件-

df = pd.read_json("temp.txt", lines = True)
print df

问题是,在 json 文件中,“childs”键包含一组未知索引,并且在“\n”之间是可用的。所以如果我运行上面的代码,我会得到 ValueError: Expected object or value 但是如果我在“pqr”之后删除“\n”可用,我的代码就可以工作了。

我不想从我的数据中删除可用的“\n”。我想在我的代码中处理这个。我只想使用 python pandas 而不是 python json 库来以良好的方式处理数据。

我如何才能只使用 python pandas 并处理这种类型的文件?

【问题讨论】:

  • 将整个文件读取为字符串并用换行符分割,然后你有4个json字符串,你可以简单地解析。
  • @Erik Šťastný- 好的,但是在用新行吐出数据后,如何在 pandas 数据框中维护这些数据?
  • 让json文件的每一行都是有效的json,是更好的办法

标签: python json pandas


【解决方案1】:

read_json() 无法工作,因为“pqr”后面的新行。您可以尝试修复该行,也可以尝试将整个内容格式化为有效的 JSON。我在这里通过在新行之后添加逗号并用括号将整个内容括起来以形成正确的 JSON 数组来做后者:

with open('temp.txt') as f:
    content = f.read()

pd.read_json('[' + content.replace('}\n', '},') + ']')

【讨论】:

    【解决方案2】:

    首先使用JSON validator站点检查它是否是一个有效的json文件

    一旦文件是有效的 json 格式,您可以使用下面的代码将其作为数据帧读取

    with open("training.json") as datafile:
        data = json.load(datafile)
    dataframe = pd.DataFrame(data)
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-13
      • 2022-09-23
      • 2018-10-14
      相关资源
      最近更新 更多