Python pandas json 2D数组

时间:2015-10-22 12:53:50

标签: pandas

对熊猫来说比较新,我有一个json和python文件:

{"dataset":{
    "id": 123,
    "data": [["2015-10-16",1,2,3,4,5,6],
             ["2015-10-15",7,8,9,10,11,12],
             ["2015-10-14",13,14,15,16,17]]
}}

&安培;

import pandas
x = pandas.read_json('sample.json')
y = x.dataset.data
print x.dataset

打印x.dataset和y工作正常,但是当我去访问子元素y时,它会返回一个'缓冲区'类型。发生了什么事?如何访问阵列内的数据?尝试y [0] [1]它会返回越界错误,并且迭代返回一个奇怪的系列' nul'但是,在打印x.dataset ...

之后,它似乎能够返回数据的第一部分

1 个答案:

答案 0 :(得分:2)

pandas Series的data属性指向该系列中包含的所有数据的内存缓冲区:

>>> df = pandas.read_json('sample.json')
>>> type(df.dataset)
pandas.core.series.Series
>>> type(df.dataset.data)
memoryview

如果您有一个名为"data"的列/行,则必须通过它的字符串名称来访问它,例如:

>>> type(df.dataset['data'])
list

由于这样的惊喜,它通常被认为是通过索引而不是通过属性访问来访问列的最佳实践。如果你这样做,你将得到你想要的结果:

>>> df['dataset']['data']
[['2015-10-16', 1, 2, 3, 4, 5, 6],
 ['2015-10-15', 7, 8, 9, 10, 11, 12],
 ['2015-10-14', 13, 14, 15, 16, 17]]

>>> arr = df['dataset']['data']
>>> arr[0][0]
'2015-10-16'