从dicts到DataFram的dicts

2024-04-30 02:34:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的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

我的问题是我的数据帧包含dict而不是值。

我想知道如何管理多维数据(超过2维。。。(此处为三维),带有熊猫数据框。

数据帧中的每个dict都有相同的键。


Tags: 数据jsondfdatatitlecol2col1pd
1条回答
网友
1楼 · 发布于 2024-04-30 02:34:10
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)

相关问题 更多 >