我有以下数据:
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)
我尝试使用以下方法清理数据:
from pandas.io.json import json_normalize
result = json_normalize(config, 'location',['latitude','longitude','needs_recoding'])
但这似乎不起作用。我明白了:
KeyError: 'needs_recoding'
答案 0 :(得分: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