Dict to dict to dict to DataFrame [英] Dict of dicts of dicts to DataFrame

查看:182
本文介绍了Dict to dict to dict to DataFrame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将JSON数据存储在Python Pandas DataFrame中



我的JSON数据是像这样的类似数据的字母[/ p>

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

我这样做是将数据放入DataFrame中

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

我得到这个

 在[1]中:df 
输出[1]:
col1 col2
row1 {'data4':'标题col1' ,'data1':'0.87','data3':{'data4':'标题col1','data1':'0.87','data3':
row2 {'data4' 'data1':'15352.3','data''''''''col2','data1':'15352.3','data
row3 {'data4' 0','data3':'1 {'data4':'标题col3','data1':'0','data3':'2

我的问题是我的DataFrame包含dicts而不是值。


$ b $我想知道如何使用Pandas DataFrame管理多维数据(超过2维... 3维度)。



DataFrame中的每个dict都有相同的键。

解决方案

  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标题col1标题col2
row2标题col1标题col2
row3标题col1标题col2
data3 row1 14.4878 24.4878
row2 14.9561 24.9561
row3 16.8293 26.8293
data4 row1标题row1标题row1
row2标题row2标题row2
row3标题row3标题row3

如果不想使用面板:

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


I'd like to store JSON data in a Python Pandas DataFrame

my JSON data is a dict of dicts of dicts like this

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"
    }
  }
}

I did this to put my data in a DataFrame

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

I get this

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

My problem is that my DataFrame contains dicts instead of values.

I wonder how I can manage multidimensionnal data (more than 2 dimensions... 3 dimensions here) with a Pandas DataFrame.

Each dict inside DataFrame have the same keys.

解决方案

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

output:

                   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

If you don't want use Panel:

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

这篇关于Dict to dict to dict to DataFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆