2017-04-14 64 views
1

假設我有以下兩種JSON。解析JSON在Python空數據

a={"id": "TUxNQkFHVUNBTTA0", 
    "name": "Campestre 1a. Secc.", 
    "city": { 
    "id": "TUxNQ0FHVTk2NjY", 
    "name": "Aguascalientes" 
    }, 
    "state": { 
    "id": "TUxNUEFHVTMwNjE", 
    "name": "Aguascalientes" 
    }, 
    "country": { 
    "id": "MX", 
    "name": "Mexico" 
    }, 
    "geo_information": None, 
    "subneighborhoods": [ 
    ] 
} 

b={ 
    "id": "TUxNTUxNQkFHVTNOSg", 
    "name": "Aeropuerto Aguascalientes (Lic. Jesus Teran Peredo)", 
    "city": { 
    "id": "TUxNQ0FHVTk2NjY", 
    "name": "Aguascalientes" 
    }, 
    "state": { 
    "id": "TUxNUEFHVTMwNjE", 
    "name": "Aguascalientes" 
    }, 
    "country": { 
    "id": "MX", 
    "name": "Mexico" 
    }, 
    "geo_information": { 
    "location": { 
     "latitude": 21.701155, 
     "longitude": -102.31439 
    } 
    }, 
    "subneighborhoods": [ 
    ] 
} 


print b 

,我想創建一個表 '位置' 與下一列:

位置= pandas.DataFrame(列= [ 'city_id', 'CITY_NAME', '名', 'latitud' 'longitud', 'COUNTRY_ID', 'COUNTRY_NAME', 'STATE_ID', 'STATE_NAME', 'subneighborhoods', '身份證'])

期望有以下數據:

我希望有下表

TUxNQkFHVUNBTTA0, Campestre 1a. Secc., TUxNQ0FHVTk2NjY, Aguascalientes, TUxNUEFHVTMwNjE, Aguascalientes, MX, Mexico, Null, Null, [] 
TUxNTUxNQkFHVTNOSg, Aeropuerto Aguascalientes (Lic. Jesus Teran Peredo), TUxNQ0FHVTk2NjY, Aguascalientes, TUxNUEFHVTMwNjE, Aguascalientes, MX, Mexico, 21.701155, -102.31439, [] 

如「a」的geo_information是沒有,我不能創建表。 我該如何解決這個問題?

謝謝!

+0

那不是'json',這些都是字典。他們可以用'json.dumps(a)'輕鬆地序列化成json。 – jordanm

+0

@jordanm這是真的,但鑑於這個問題詢問將數據放入一個'pandas.DataFrame',我懷疑OP值不一定要序列的字典。 –

+0

'subneighborhoods'是一個列表,它裏面的數據是怎樣的?你期望在地點的相關專欄包含什麼內容? – tmrlvi

回答

1

你嘗試json_normalizer?它會做你的要求,只是用一個點而不是下劃線。

In[1]: from pandas.io.json import json_normalize 

In[2]: pd.DataFrame(json_normalize([a,b])) 
Out[2]: 
      city.id  city.name country.id country.name geo_information \ 
0 TUxNQ0FHVTk2NjY Aguascalientes   MX  Mexico    NaN 
1 TUxNQ0FHVTk2NjY Aguascalientes   MX  Mexico    NaN 

    geo_information.location.latitude geo_information.location.longitude \ 
0        NaN         NaN 
1       21.701155       -102.31439 

        id            name \ 
0 TUxNQkFHVUNBTTA0        Campestre 1a. Secc. 
1 TUxNTUxNQkFHVTNOSg Aeropuerto Aguascalientes (Lic. Jesus Teran Pe... 

      state.id  state.name subneighborhoods 
0 TUxNUEFHVTMwNjE Aguascalientes    [] 
1 TUxNUEFHVTMwNjE Aguascalientes    [] 

(但是,它會留下subneighborhoods完好,這不一定是你想要的)

+0

它是由如果tree_json [ 'geo_information']是無解決: tree_json.update({ 「geo_information」:{ 「位置」:{ 「緯度」:無, 「經度」:無}}}) – Diego