我想逐行迭代数据帧,并使用单元格值从api中提取数据,并将响应分配给新列。我得到了响应,一切正常,但我需要将json响应转换为数据帧列所以我写了一个类似于这个的函数
def get():
response=requests.get(url + id)
return response.json()
并将此功能应用于每行
d['res'] = d.apply(lambda row: get())
我在列中得到json格式的问题。我如何从回复中提取我需要的内容并将其放入列中。
{ 'code': 'OK',
'items': [{'start': '2021-03-21T00:00:00.000',
'end': '2021-03-31T00:00:00.000',
'location': {'code': None,
'position': {'lat': 47.464699, 'lon': 8.54917},
'country_code': None},
'source': 'geoeditor',
'title': 'test 25.03.2021',
'body': 'test description',
'severity': None,
'category': None,
'relatedEntities': None,
'relevant': None,
'raw': {'active': True,
'id': 82482150,
'layerId': 'disruption_il',
'locationType': 'POINT',
'name': 'New Location',
'changed': '2021-03-25T20:49:51Z',
'groupId': None,
'identifiers': [{'name': 'ref_id',
'value': '9ded7375-bea2-4466-96a9-fd5c42f9a562'}],
'properties': {'title': 'test 25.03.2021',
'source': 'disruption_news_event',
'to_date': '2021-03-31',
'relevant': 'true',
'from_date': '2021-03-21',
'description': 'test description'},
'relationships': [{'referenceIdentifierValue': 'ZRH',
'relationshipId': 'event_impacts_airport',
'referenceLayerId': 'airport_status',
'referenceIdentifierName': 'iata_code'}]}}],
'totalItems': 1,
'errors': []}
我如何从项目中提取数据并将其放在列中,例如:
col 1 = start
col 2 = end
col n = country_code etc...
您尝试过json_normalize
方法吗?
有一个使用的示例:
import json
# load data using Python JSON module
with open('data/nested_mix.json','r') as f:
data = json.loads(f.read())
# Normalizing data
df = pd.json_normalize(data, record_path =['students'])
我在这篇文章中发现:https://towardsdatascience.com/how-to-convert-json-into-a-pandas-dataframe-100b2ae1e0d8
一般来说,有一些将json数据转换为pandas数据帧的例子,所以这篇文章可能会对您有所帮助。