2014-10-30 30 views
2

我試圖在python中將熊貓數據框轉換爲json。但我不能得到在json中想要的結果格式我是熊貓的新手有沒有一種方法可以實現轉換並簡單地使用我所能想到的一切就是創建循環來獲取關鍵「freq」和狀態。但我覺得必須有更好的方法。任何建議,將不勝感激。在python中將熊貓數據框轉換爲json的最佳方法

JSON:我想:

[ 
    {State:'AL',freq:{low:4786, mid:1319, high:249}} 
    ,{State:'AZ',freq:{low:1101, mid:412, high:674}} 
    ,{State:'CT',freq:{low:932, mid:2149, high:418}} 
    ,{State:'DE',freq:{low:832, mid:1152, high:1862}} 
    ,{State:'FL',freq:{low:4481, mid:3304, high:948}} 
    ,{State:'GA',freq:{low:1619, mid:167, high:1063}} 
    ,{State:'IA',freq:{low:1819, mid:247, high:1203}} 
    ,{State:'IL',freq:{low:4498, mid:3852, high:942}} 
    ,{State:'IN',freq:{low:797, mid:1849, high:1534}} 
    ,{State:'KS',freq:{low:162, mid:379, high:471}} 
    ]; 

但我的數據框有3列是這樣的:

數據幀:我

State type freq 
AZ low 1101 
CT low 932 
DE low 832 
FL low 4481 
GA low 1619 
IA low 1819 
IL low 4498 
IN low 797 
KS low 162 
AZ mid 412 
CT mid 2149 
DE mid 1152 
FL mid 3304 
GA mid 167 
IA mid 247 
IL mid 3852 
IN mid 1849 
KS mid 379 
AZ high 674 
CT high 418 
DE high 1862 
FL high 948 
GA high 1063 
IA high 1203 
IL high 942 
IN high 1534 
KS high 471 

回答

2
import pandas as pd 

data = """\ 
State type freq 
AZ low 1101 
CT low 932 
DE low 832 
FL low 4481 
GA low 1619 
IA low 1819 
IL low 4498 
IN low 797 
KS low 162 
AZ mid 412 
CT mid 2149 
DE mid 1152 
FL mid 3304 
GA mid 167 
IA mid 247 
IL mid 3852 
IN mid 1849 
KS mid 379 
AZ high 674 
CT high 418 
DE high 1862 
FL high 948 
GA high 1063 
IA high 1203 
IL high 942 
IN high 1534 
KS high 471""" 

data = pd.DataFrame([line.split() for line in data.splitlines()[1:]], 
        columns=data.splitlines()[0].split()) 

bystate = data.pivot('State', 'type') 

打印

  freq    
    type high low mid 
    State     
    AZ  674 1101 412 
    CT  418 932 2149 
    DE  1862 832 1152 
    FL  948 4481 3304 
    GA  1063 1619 167 
    IA  1203 1819 247 
    IL  942 4498 3852 
    IN  1534 797 1849 
    KS  471 162 379 

一旦你有了最終的數據框,你可以使用bystate.to_json()來獲得一個JSON格式的字符串。

+0

OP需要JSON輸出。只需添加'bystate.json' – 2014-10-30 23:55:06

+0

好點 - 請隨時編輯答案 – holdenweb 2014-11-02 05:14:46

+0

感謝您的編輯! – holdenweb 2014-11-11 18:44:57

相關問題