【问题标题】:JSONDecodeError when processing dataframe column that is supposed to be a json处理应该是 json 的数据框列时出现 JSONDecodeError
【发布时间】:2020-12-19 14:42:41
【问题描述】:

我在数据框中有一列应该包含对应于 json 的信息。

我尝试了以下方法来加载数据:

pd.io.json.json_normalize(sr_df.signal_inputs.apply(json.loads))
sr_df.signal_inputs.apply(json.loads).values.tolist() 

但是当我尝试加载列中包含的信息以进行一些数据转换时,我得到了错误:

---------------------------------------------------------------------------
JSONDecodeError                           Traceback (most recent call last)
<ipython-input-5-bdc3a3932f07> in <module>
----> 1 test = pd.io.json.json_normalize(sr_df.signal_inputs.apply(json.loads))
      2 test.head()

~/opt/anaconda3/lib/python3.7/site-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds)
   3846             else:
   3847                 values = self.astype(object).values
-> 3848                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   3849 
   3850         if len(mapped) and isinstance(mapped[0], Series):

pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()

~/opt/anaconda3/lib/python3.7/json/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    346             parse_int is None and parse_float is None and
    347             parse_constant is None and object_pairs_hook is None and not kw):
--> 348         return _default_decoder.decode(s)
    349     if cls is None:
    350         cls = JSONDecoder

~/opt/anaconda3/lib/python3.7/json/decoder.py in decode(self, s, _w)
    335 
    336         """
--> 337         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    338         end = _w(s, end).end()
    339         if end != len(s):

~/opt/anaconda3/lib/python3.7/json/decoder.py in raw_decode(self, s, idx)
    353             obj, end = self.scan_once(s, idx)
    354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
    356         return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

谁能帮助我了解导致此错误的原因以及如何解决?

额外信息:此列中的某些行是 None 并且我将它们转换为 nan,我不知道这是否会导致问题。

非常感谢。

【问题讨论】:

  • 你确定要申请json.loads吗?
  • 在这一点上我不确定一切,你认为我应该使用什么?
  • 如果是requests 回复,能否分享网址以重现数据?
  • 不,我无权访问 URL,我只能访问数据库中的内容,然后我可以将其加载到数据框并显示在列中。

标签: json python-3.x pandas dataframe jupyter-notebook


【解决方案1】:

我想更新这个,因为我找到了答案,json 列中有一个流氓 none,一旦它被删除,json 就开始完美加载。

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 2021-12-26
    • 1970-01-01
    • 2011-07-12
    • 2021-02-14
    • 2021-11-12
    相关资源
    最近更新 更多