【问题标题】:appending json files in python在python中附加json文件
【发布时间】:2020-03-22 09:07:03
【问题描述】:

我正在尝试在 python 中附加一些 json 文件。我有以下代码。似乎是对的。但是,我收到一个错误。

代码如下。

import pandas as pd

df1=pd.DataFrame()
for i in range(0,49):
    df = pd.read_json ('/media/michael/extHDD/Kaggle/DeepFAke/DF_all/metadata{}.json'.format(i))
    df1.append(df.T)

错误如下。

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-76-ddb355627155> in <module>
      3 df1=pd.DataFrame()
      4 for i in range(0,49):
----> 5     df = pd.read_json ('/media/michael/extHDD/Kaggle/DeepFAke/DF_all/metadata{}.json'.format(i))
      6     df1.append(df.T)

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in read_json(path_or_buf, orient, typ, dtype, convert_axes, convert_dates, keep_default_dates, numpy, precise_float, date_unit, encoding, lines, chunksize, compression)
    590         return json_reader
    591 
--> 592     result = json_reader.read()
    593     if should_close:
    594         try:

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in read(self)
    715             obj = self._get_object_parser(self._combine_lines(data.split("\n")))
    716         else:
--> 717             obj = self._get_object_parser(self.data)
    718         self.close()
    719         return obj

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in _get_object_parser(self, json)
    737         obj = None
    738         if typ == "frame":
--> 739             obj = FrameParser(json, **kwargs).parse()
    740 
    741         if typ == "series" or obj is None:

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in parse(self)
    847 
    848         else:
--> 849             self._parse_no_numpy()
    850 
    851         if self.obj is None:

~/myenv/lib/python3.5/site-packages/pandas/io/json/_json.py in _parse_no_numpy(self)
   1091         if orient == "columns":
   1092             self.obj = DataFrame(
-> 1093                 loads(json, precise_float=self.precise_float), dtype=None
   1094             )
   1095         elif orient == "split":

ValueError: Expected object or value

当我为每个文件单独执行代码时,该代码有效。任何人都可以帮助我解决这个问题。

感谢和最好的问候

迈克尔

【问题讨论】:

  • 您确定这适用于手动完成的所有文件吗? print for which i 有错误,可能是特定文件的问题。您也可以使用普通的 json 阅读器并将其解析为 df 自己。最后我建议使用fstrings 而不是.format
  • 嗨,我没有 7 号,因此出现了错误。谢谢迈克尔

标签: python json python-3.x pandas


【解决方案1】:

错误发生在df = pd.read_json (...) 行。很可能其中一个文件不存在或不正确。我的建议是使用try catch 来识别它:

for i in range(0,49):
    try:
        df = pd.read_json ('/media/michael/extHDD/Kaggle/DeepFAke/DF_all/metadata{}.json'.format(i))
    except:
        print('Error on iteration', i, ', file',
              '/media/michael/extHDD/Kaggle/DeepFAke/DF_all/metadata{}.json'.format(i))
        raise
df1.append(df.T)

捕获任何异常通常都是不好的做法,因为它可以隐藏真正的异常情况,例如 IO 或内存错误。这就是我在上面的代码中重新引发原始异常的原因。

【讨论】:

  • 您好,我没有 7 号文件,因此出现错误。谢谢和最好的问候迈克尔
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2021-04-09
  • 2016-08-16
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多