我试图读取通过df.to_json()via 创建的数据框,pd.read_json但得到了ValueError。我认为这可能与索引为MultiIndex的事实有关,但我不确定如何处理。
df.to_json()
pd.read_json
ValueError
调用了55k行的原始数据框,psi并test.json通过以下方式创建了该数据框:
psi
test.json
psi.head().to_json('test.json')
print psi.head().to_string()如果要使用它,这是输出。
print psi.head().to_string()
当我对这小部分数据(5行)进行处理时,我得到一个ValueError。
! wget --no-check-certificate https://gist.githubusercontent.com/olgabot/9897953/raw/c270d8cf1b736676783cc1372b4f8106810a14c5/test.json import pandas as pd pd.read_json('test.json')
这是完整的堆栈:
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-14-1de2f0e65268> in <module>() 1 get_ipython().system(u' wget https://gist.githubusercontent.com/olgabot/9897953/raw/c270d8cf1b736676783cc1372b4f8106810a14c5/test.json'>) 2 import pandas as pd ----> 3 pd.read_json('test.json') /home/obot/virtualenvs/envy/lib/python2.7/site-packages/pandas/io/json.pyc in read_json(path_or_buf, orient, typ, dtype, convert_axes, convert_dates, keep_default_dates, numpy, precise_float, date_unit) 196 obj = FrameParser(json, orient, dtype, convert_axes, convert_dates, 197 keep_default_dates, numpy, precise_float, --> 198 date_unit).parse() 199 200 if typ == 'series' or obj is None: /home/obot/virtualenvs/envy/lib/python2.7/site-packages/pandas/io/json.pyc in parse(self) 264 265 else: --> 266 self._parse_no_numpy() 267 268 if self.obj is None: /home/obot/virtualenvs/envy/lib/python2.7/site-packages/pandas/io/json.pyc in _parse_no_numpy(self) 481 if orient == "columns": 482 self.obj = DataFrame( --> 483 loads(json, precise_float=self.precise_float), dtype=None) 484 elif orient == "split": 485 decoded = dict((str(k), v) ValueError: No ':' found when decoding object value > /home/obot/virtualenvs/envy/lib/python2.7/site-packages/pandas/io/json.py(483)_parse_no_numpy() 482 self.obj = DataFrame( --> 483 loads(json, precise_float=self.precise_float), dtype=None) 484 elif orient == "split":
但是,当我在整个数据帧(55k行)上执行此操作时,我得到一个无效的指针错误,并且IPython内核死亡。有任何想法吗?
编辑:首先添加了如何生成json。
这尚未实现ATM,请在此处查看问题:https : //github.com/pydata/pandas/issues/4889。
您可以简单地首先重置索引,例如
df.reset_index().to_json(...)
它会工作。