我正在尝试动态扁平化一个API请求的json响应,但是只得到一行,所有的记录都返回了。请帮助我或者给我指出正确的方向。
我的json响应如下所示
导入请求,json URL ='https://data.calgary.ca/resource/848s-4m4z.json'数据= json.加载(请求.获取(URL).文本)数据
[{'sector': 'NORTH',
'community_name': 'THORNCLIFFE',
'group_category': 'Crime',
'category': 'Theft FROM Vehicle',
'count': '9',
'resident_count': '8474',
'date': '2018-03-01T12:00:00.000',
'year': '2018',
'month': 'MAR',
'id': '2018-MAR-THORNCLIFFE-Theft FROM Vehicle-9',
'geocoded_column': {'latitude': '51.103099554741',
'longitude': '-114.068779421169',
'human_address': '{"address": "", "city": "", "state": "", "zip": ""}'},
':@computed_region_4a3i_ccfj': '2',
':@computed_region_p8tp_5dkv': '4',
':@computed_region_4b54_tmc4': '2',
':@computed_region_kxmf_bzkv': '192'},
{'sector': 'SOUTH',
'community_name': 'WOODBINE',
'group_category': 'Crime',
'category': 'Theft FROM Vehicle',
'count': '3',
'resident_count': '8866',
'date': '2019-11-01T00:00:00.000',
'year': '2019',
'month': 'NOV',
'id': '2019-NOV-WOODBINE-Theft FROM Vehicle-3',
'geocoded_column': {'latitude': '50.939610852207664',
'longitude': '-114.12962865374453',
'human_address': '{"address": "", "city": "", "state": "", "zip": ""}'},
':@computed_region_4a3i_ccfj': '1',
':@computed_region_p8tp_5dkv': '6',
':@computed_region_4b54_tmc4': '5',
':@computed_region_kxmf_bzkv': '43'}
]
Here is my code
``
`# Function for flattening
# json
def flatten_json(y):
out = {}
def flatten(x, name=''):
# If the Nested key-value
# pair is of dict type
if type(x) is dict:
for a in x:
flatten(x[a], name + a + '_')
# If the Nested key-value
# pair is of list type
elif type(x) is list:
i = 0
for a in x:
flatten(a, name + str(i) + '_')
i += 1
else:
out[name[:-1]] = x
flatten(y)
return out
# Driver code
# print(flatten_json(data))
newf=flatten_json(data)
pd.json_normalize(newf)`
``
It returns
[enter image description here](https://i.stack.imgur.com/i6mUe.png)
While am expecting the data in the following format
[enter image description here](https://i.stack.imgur.com/mXNtU.png).
json_normalize以预期的格式提供了数据,但是我需要一种方法来动态解析不同的json请求格式(以编程方式)。
1条答案
按热度按时间os8fio9y1#
要获得正确形式的 Dataframe ,可以使用以下示例(
data
是问题中的列表):印刷品:
| 扇形|团体名称|组类别|范畴|计数器|常驻计数|日期|年份|月份|标识符|:@computed_region_4a3i_ccfj|:@computed_region_p8tp_5dkv(已计算区域)|:@computed_region_4b54_tmc4的计算区域|:@计算区域kxmf bzkv|地理编码列纬度|地理编码列经度|地址地址|地址_城市|地址状态|地址_zip|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|- -|
| 北部|索恩克利夫|犯罪|从车辆上盗窃|九个|小行星8474| 2018年3月1日12时00分00秒|二〇一八年|三月|2018年-MAR-THORNCLIFFE-车辆盗窃案-9| 2个|四个|2个|一百九十二|五十一、一零三一| -114.069 |||||
| 南部|木质|犯罪|从车辆上盗窃|三个|小行星8866| 2019年11月1日星期一00:00:00.000|二〇一九年|十一月|2019年11月-WOODBINE-车辆盗窃-3|一个|六个|五个|四十三|五十九三九六| -114.13 |||||
| 南部|柳园|犯罪|从车辆上盗窃|四个|小行星5328| 2019年11月1日星期一00:00:00.000|二〇一九年|十一月|2019年11月-柳树公园-车辆盗窃-4|三个|五个|六个|八十九|50.9566美元| -114.056 |||||
| 南部|柳园|犯罪|商业抢劫罪|一个|小行星5328| 2019年11月1日星期一00:00:00.000|二〇一九年|十一月|2019年11月-柳园-商业抢劫案-1|三个|五个|六个|八十九|50.9566美元| -114.056 |||||
| 西部|林肯公园|犯罪|广告插播|五个|小行星2617| 2019年11月1日星期一00:00:00.000|二〇一九年|十一月|2019年11月-林肯公园-商业休息和进入-5|一个|2个|八个|四十二|小行星51.0101| -114.13 |||||