2016-04-18 8 views
2

の変換:は、私は、次のデータ持って、ネストされたJSON

josonloc = [{u'borough': u'MANHATTAN', 
u'location': {u'latitude': u'40.8082795', 
u'needs_recoding': False}, 
u'unique_key': u'3405059', 
u'zip_code': u'10035'}] 

しかし、私はデータをインポートするときに、それが適切

df = pd.read_joson(jsonloc) 

Screenshot

表示されていないが、私はとデータを掃除しようとしました。

from pandas.io.json import json_normalize 
result = json_normalize(config, 'location',['latitude','longitude','needs_recoding']) 

しかしそれはうまくいかないようです。私が取得:

KeyError: 'needs_recoding' 

答えて

0

私はあなたがパラメータなしでjson_normalizeを使用することができると思う:

import pandas as pd 
from pandas.io.json import json_normalize 

jsonloc = [{u'borough': u'MANHATTAN', 
u'location': {u'latitude': u'40.8082795', 
u'needs_recoding': False}, 
u'unique_key': u'3405059', 
u'zip_code': u'10035'}] 

result = json_normalize(jsonloc) 
print result 
    borough location.latitude location.needs_recoding unique_key zip_code 
0 MANHATTAN  40.8082795     False 3405059 10035 

あなたは、列名を変更したい場合は、splitとリストの内包表記を使用します。

cols = result.columns.str.split('.') 
print cols 
Index([     [u'borough'],  [u'location', u'latitude'], 
     [u'location', u'needs_recoding'],     [u'unique_key'], 
          [u'zip_code']], 
     dtype='object') 

print [col[0] if len(col) == 1 else col[1] for col in result.columns.str.split('.')] 
[u'borough', 'latitude', 'needs_recoding', u'unique_key', u'zip_code'] 

result.columns=[col[0] if len(col) == 1 else col[1] for col in result.columns.str.split('.')] 
print result 
    borough latitude needs_recoding unique_key zip_code 
0 MANHATTAN 40.8082795   False 3405059 10035 
関連する問題