【发布时间】: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