我有一个很长的json,像这样:http://pastebin.com/gzhHEYGy
我想把它放到一个pandas数据框架中,以便使用它,所以根据文档,我做了以下事情:
df = pd.read_json('/user/file.json')
print df
我得到了这个traceback:
File "/Users/user/PycharmProjects/PAN-pruebas/json_2_dataframe.py", line 6, in <module>
df = pd.read_json('/Users/user/Downloads/54db3923f033e1dd6a82222aa2604ab9.json')
File "/usr/local/lib/python2.7/site-packages/pandas/io/json.py", line 198, in read_json
date_unit).parse()
File "/usr/local/lib/python2.7/site-packages/pandas/io/json.py", line 266, in parse
self._parse_no_numpy()
File "/usr/local/lib/python2.7/site-packages/pandas/io/json.py", line 483, in _parse_no_numpy
loads(json, precise_float=self.precise_float), dtype=None)
File "/usr/local/lib/python2.7/site-packages/pandas/core/frame.py", line 203, in __init__
mgr = self._init_dict(data, index, columns, dtype=dtype)
File "/usr/local/lib/python2.7/site-packages/pandas/core/frame.py", line 327, in _init_dict
dtype=dtype)
File "/usr/local/lib/python2.7/site-packages/pandas/core/frame.py", line 4620, in _arrays_to_mgr
index = extract_index(arrays)
File "/usr/local/lib/python2.7/site-packages/pandas/core/frame.py", line 4668, in extract_index
raise ValueError('arrays must all be same length')
ValueError: arrays must all be same length
然后从前面的一个问题中,我发现我需要做这样的事情:
d = dict( A = np.array([1,2]), B = np.array([1,2,3,4]) )
但是我不知道我应该如何获得像一个numpy数组的内容。我如何在这样的大文件中保留数组的长度?。提前感谢。
2条答案
按热度按时间ymdaylpp1#
json方法不起作用,因为json文件不是它期望的格式。因为我们可以很容易地将json作为dict加载,让我们尝试这种方式:
输出:
e0uiprwp2#
pandas模块而不是json模块应该是答案(接受的答案仍然会将数据加载回dataframe,所以为什么要有中间步骤???):pandas本身具有read_json能力,问题的根源一定是你没有以正确的方向读取json.你必须传递你在第一个地方创建json变量时使用的精确的orient参数
例如:
然后: