2017-04-14 20 views
1

次の2つのJsonがあるとします。PythonでJsonを解析するヌルデータ

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'、 'C​​ITY_NAME'、 '名前'、 'LATITUD' を'longitud'、 'C​​OUNTRY_ID'、 'C​​OUNTRY_NAME'、 'STATE_ID'、 'STATE_NAME'、 'subneighborhoods'、 'ID'])

次のようなデータを持っていることを期待:

は私が持っていることを期待以下の表

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がNoneであるため、テーブルを作成できません。 どうすればこの問題を解決できますか?

ありがとうございます!

+0

(しかし、それはあなたが望むものを必ずしもされていない、そのままsubneighborhoodsを残して) '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    [] 

+0

tree_json ['geo_information']がNoneの場合に解決されました: tree_json.update({" geo_information ":{" location ":{"緯度 ":なし、" longitude ":なし}}}) – Diego