如何使数据框可以使用JSON字符串显示此输出

时间:2015-03-19 06:58:59

标签: python pandas dataframe

我想更改JSON结构以生成预期的输出。

我不想用Python和Pandas实现它。

关于如何更改json格式的任何想法,

这样我就可以直接通过pd.read_json(JSON_STR)获得输出。

由于

数据帧的当前输出

json_str='''{  
   "2013-03-20_change_in_real_gdp":{  
      "2013":{  
         "upper_end_of_central_tendency":"2.8",
         "lower_end_of_range":"2.0"
      },
      "2014":{  
         "upper_end_of_central_tendency":"3.4",
         "lower_end_of_range":"2.6"
      }      
   },
   "2012-04-25_change_in_real_gdp":{  
      "2013":{  
         "upper_end_of_central_tendency":"7.7",
         "lower_end_of_range":"7.0"
      },
      "2014":{  
         "upper_end_of_central_tendency":"7.4",
         "lower_end_of_range":"6.3"
      }
    }
}'''

pd.read_json(json_str)

这是dataframe

的预期输出

1 个答案:

答案 0 :(得分:0)

向后工作,您可以创建数据框,然后将其转换为JSON以查看预期的格式。当您尝试将其转换为JSON时,您将收到错误,因为度量索引值不是唯一的。重置索引后,您将获得以下JSON。

import json

df = pd.DataFrame({2013: [2.8, 2, 7.7, 7], 
                   2014: [3.4, 2.6, 7.4, 6.3], 
                   'source': ['2013-03-20_change_in_real_gdp', 
                              '2013-03-20_change_in_real_gdp', 
                              '2012-04-25_change_in_real_gdp', 
                              '2012-04-25_change_in_real_gdp']}, 
                   index=['upper_end_of_central_tendency', 
                          'lower_end_of_range', 
                          'upper_end_of_central_tendency', 
                          'lower_end_of_range'])
df.index.name = 'measure'

>>> df.reset_index().to_json()

'{"measure": {"0":"upper_end_of_central_tendency",
              "1":"lower_end_of_range",
              "2":"upper_end_of_central_tendency",
              "3":"lower_end_of_range"},
  "2013": {"0":2.8,"1":2.0,"2":7.7,"3":7.0},
  "2014": {"0":3.4,"1":2.6,"2":7.4,"3":6.3},
  "source": {"0":"2013-03-20_change_in_real_gdp",
             "1":"2013-03-20_change_in_real_gdp",
             "2":"2012-04-25_change_in_real_gdp",
             "3":"2012-04-25_change_in_real_gdp"}}'"""