2013-03-16 78 views
13

以JSON数据存储在一个Python熊猫数据帧快译通类型的字典类型的字典到数据帧

我的JSON数据类型的字典的类型的字典是这样

d = { 
    "col1": { 
    "row1": { 
     "data1": "0.87", 
     "data2": "Title col1", 
     "data3": "14.4878", 
     "data4": "Title row1" 
    }, 
    "row2": { 
     "data1": "15352.3", 
     "data2": "Title col1", 
     "data3": "14.9561", 
     "data4": "Title row2" 
    }, 
    "row3": { 
     "data1": "0", 
     "data2": "Title col1", 
     "data3": "16.8293", 
     "data4": "Title row3" 
    } 
    }, 
    "col2": { 
    "row1": { 
     "data1": "0.87", 
     "data2": "Title col2", 
     "data3": "24.4878", 
     "data4": "Title row1" 
    }, 
    "row2": { 
     "data1": "15352.3", 
     "data2": "Title col2", 
     "data3": "24.9561", 
     "data4": "Title row2" 
    }, 
    "row3": { 
     "data1": "0", 
     "data2": "Title col2", 
     "data3": "26.8293", 
     "data4": "Title row3" 
    } 
    } 
} 

我这样做是为了一个字典把我的数据在数据帧

import pandas as pd 
df=pd.DataFrame(d) 

我得到这个

In [1]: df 
Out[1]: 
                col1            col2 
row1 {'data4': 'Title col1', 'data1': '0.87', 'data3': {'data4': 'Title col1', 'data1': '0.87', 'data3': 
row2 {'data4': 'Title col2', 'data1': '15352.3', 'data {'data4': 'Title col2', 'data1': '15352.3', 'data 
row3 {'data4': 'Title col3', 'data1': '0', 'data3': '1 {'data4': 'Title col3', 'data1': '0', 'data3': '2 

我的问题是,我的DataFrame包含字符而不是值。

我不知道如何可以管理multidimensionnal数据(超过2名维... 3个尺寸在这里)有熊猫数据帧。

DataFrame中的每个字典都有相同的密钥。

回答

17
df = pd.Panel.from_dict(d).to_frame() 

输出:

    col1  col2 
major minor       
data1 row1   0.87  0.87 
     row2  15352.3  15352.3 
     row3   0   0 
data2 row1 Title col1 Title col2 
     row2 Title col1 Title col2 
     row3 Title col1 Title col2 
data3 row1  14.4878  24.4878 
     row2  14.9561  24.9561 
     row3  16.8293  26.8293 
data4 row1 Title row1 Title row1 
     row2 Title row2 Title row2 
     row3 Title row3 Title row3 

如果你不想使用面板:

pd.concat(map(pd.DataFrame, d.itervalues()), keys=d.keys()).stack().unstack(0) 
+0

非常感谢......我不知道 “面板” 的概念。但我认为它仅限于3个维度(就像我的情况一样)。如果你可以确认或无效,我会很高兴! – scls 2013-03-16 22:38:25

+0

是'Panel'是3D,并且有一个用于4D数据的'Panel4D'。多于2个维度的数据总是使用MultiIndex DataFrame。 – HYRY 2013-03-16 22:45:09

+0

谢谢,但我想'data1',...'data4'作为“第一级”的索引,这不是这里的情况 – scls 2013-03-16 23:11:01

相关问题