我有网站的 API 文档http://json-homework.task-sss.krasilnikov.spb.ru/docs/9f66a575a6cfaaf7e43177317461d057我要找到在某个城市的学校学习过的所有用户(其中 id 是 2) . 通过运行此代码(all_users包含上一个任务中有关用户的主要信息的列表):
school=[]
for user in all_users:
user_id=user.get('id')
url = f'http://json-homework.task-sss.krasilnikov.spb.ru/api/user/get?api_key=9f66a575a6cfaaf7e43177317461d057&user_id={user_id}&fields=schools'
data = rq.get(url)
school=school+json.loads(data.text)["response"]
school
我得到了这样的数据(这是输出的一小部分,填充了许多字段):
{'id': 136840302,
'first_name': 'Marina',
'last_name': 'Kushnir',
'is_closed': False,
'schools': [{'id': '352496',
'country': 1,
'city': 57,
'name': 'Лицей ИГУ',
'year_from': 2015,
'year_to': 2019,
'class': '',
'type': 2,
'type_str': 'Lyceum'}]},
所以我在参数'schools'中包含了一个参数'city',我只需要提取那些拥有这个参数的用户'city': 2。我也试过这段代码:
school=[]
for user in all_users:
user_id=user.get('id')
url = f'http://json-homework.task-sss.krasilnikov.spb.ru/api/user/get?api_key=9f66a575a6cfaaf7e43177317461d057&user_id={user_id}&fields=schools'
data = rq.get(url)
school=school+json.loads(data.text)["response"]
school_norm=json_normalize(school)
schools = school_norm.get('schools')
school2=[]
for i in schools:
if "'city' : 2" in i:
school2.append(json.loads(data.text)["response"])
sch=pd.DataFrame(school2)
但它不接受这样的条件if "'city' : 2" in i:。那么我该怎么做这个任务呢?
我的第一个任务的代码是
all_users = []
for page in range(1,42):
url=f'http://json-homework.task-sss.krasilnikov.spb.ru/api/groups/getmembers?api_key=9f66a575a6cfaaf7e43177317461d057&group_id=4508123&page={page}'
data=rq.get(url)
all_users = all_users + json.loads(data.text)["response"]
json_normalize(all_users)
group_data = pd.DataFrame(all_users, columns=['id','first_name','last_name'])
group_data = group_data.sort_values('id')
group_data = group_data.set_index('id')
group_data
和输出:
所以在我上面写的任务的输出中,我需要得到类似于这个数据框,但只有那些有学校城市 id=2 的人,正如我之前解释的那样