2015-03-19 56 views
0

我想更改JSON結構以生成預期輸出。如何使數據框可以使用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) 

這是從數據框中

回答

0

工作向後預期的輸出,你可以創建你d ataframe,然後將其轉換爲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"}}'""" 
相關問題