Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将json解析为数据帧_Python_Json_Pandas - Fatal编程技术网

Python 将json解析为数据帧

Python 将json解析为数据帧,python,json,pandas,Python,Json,Pandas,我想将上面的json加载到pandas数据框中,并使is\u可用和变量列名,因此最终的结构如下所示: { "type_a": { "2015-08-07": { "is_available": false, "variable": 0.282 }, "2015-08-23": { "is_available": false, "variable": 0.296 }, "2017-03-28": {

我想将上面的json加载到pandas数据框中,并使
is\u可用
变量
列名,因此最终的结构如下所示:

{
  "type_a": {
    "2015-08-07": {
      "is_available": false, 
      "variable": 0.282
    }, 
    "2015-08-23": {
      "is_available": false, 
      "variable": 0.296
    },
    "2017-03-28": {
      "is_available": false, 
      "variable": 0.524
    }
  }, 
  "type_b": {
    "2015-06-27": {
      "is_available": true, 
      "variable": 0.038
    }, 
    "2015-07-30": {
      "is_available": true, 
      "variable": 0.035
    },
    "2017-04-27": {
      "is_available": true, 
      "variable": 0.158
    }
  }
}
目前,我这样做:

             data_source      is_available     variable
2015-08-07     type_a            false           0.282
2015-08-23     type_a            false           0.296
2017-03-28     type_a            false           0.524
2015-06-27     type_b            true            0.038  
2015-07-30     type_b            true            0.035
2015-04-27     type_b            true            0.158

如果我假设您的数据被称为
数据
,则这将实现:

pd.read_json(json)

它不就断章取义地使用真假吗?因为这不是python语法
import pandas as pd

df = pd.DataFrame.from_dict({(i, j): data[i][j] for i in data.keys() for j in data[i].keys()}, orient='index')
df['data_source'] = df.index.droplevel(level=1)
df.index = df.index.droplevel(level=0)