从python中的json中提取每行的列表键和值列表

时间:2017-12-07 10:35:56

标签: python json pandas

我正在尝试从json中提取每个条目的键列表和所有值的列表。考虑以下json:

[{'height': 1.2 , 'width':2.5, 'weight':5 },{'height': 1.7 , 'width':4.5, 'weight':2 },{'height': 3.2 , 'width':4.5, 'weight':7 }]

我希望输出为:

['height','width','weight']

[[1.2,2.5,5],[1.7,4.5,2],[3.2,4.5,7]]

基本上我需要将它加载到pandas Dataframe。我相信直接加载行和列会更容易。我无法将json直接加载到DataFrame,我无法找到提取行和列的有效方法,如上所述。

2 个答案:

答案 0 :(得分:1)

假设您已将json加载到变量(如文本)中,您只需执行以下操作:

In [13]: import json, pandas

In [14]: text = json.dumps([{'height': 1.2 , 'width':2.5, 'weight':5 },{'height': 1.7 , 'width':4.5, 'weight':2 },{'height': 3.2 , 'width':4.5, 'weight':7 }])
    ...: 

In [15]: df = pandas.read_json(text)

In [16]: df
Out[16]: 
   height  weight  width
0     1.2       5    2.5
1     1.7       2    4.5
2     3.2       7    4.5

In [17]: df.columns.values
Out[17]: array([u'height', u'weight', u'width'], dtype=object)

In [18]: df.as_matrix()
Out[18]: 
array([[ 1.2,  5. ,  2.5],
       [ 1.7,  2. ,  4.5],
       [ 3.2,  7. ,  4.5]])

答案 1 :(得分:1)

正如评论所提到的,您可以直接将字典传递给DataFrame构造函数。但是,如果您真的想要您出于某种原因描述的格式,可以使用:

Session_End()