Я пытаюсь создать фреймворк, содержащий 3 разные категории из Foursquare в 8 разных городах, но ничего из того, что я пробую, не работает ... Может ли кто-нибудь помочь?
Переменные
cities = ['Santiago', 'Belo Horizonte', 'Miami', 'Philadelphia', 'Toronto', 'Madrid', 'San Petersburg', 'Ahmadabad']
countries = [' Chile', ' Brazil', ' USA', ' USA', ' Canada', ' Spain', ' Russia', ' India']
pop = [5.7, 5.45, 5.48, 5.36, 5.16, 5.17, 5.35, 5.3]
query = ['College', 'University', 'Police Station', 'Medical Center']
categories = ['4bf58dd8d48988d1a8941735', '4bf58dd8d48988d12e941735', '4bf58dd8d48988d104941735']
Присоединение городов и стран для геолокации
addresses = [i + j for i, j in zip(cities, countries)]
Учетные данные API
CLIENT_ID = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
CLIENT_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
VERSION = '20200604'
radius = 10000
LIMIT = 1000
А теперь ПРОБЛЕМА. В идеале все делалось бы сразу, автоматически:
latlon = []
for i in addresses:
geolocator = Nominatim(user_agent="foursquare_agent")
location = geolocator.geocode(i)
latitude = location.latitude
longitude = location.longitude
for j in categories:
categoryId = j
url = 'https://api.foursquare.com/v2/venues/search?&categoryId={}&client_id={}&client_secret={}&ll={},{}&v={}&radius={}&limit={}'.format(categoryId, CLIENT_ID, CLIENT_SECRET, latitude, longitude, VERSION, radius, LIMIT)
results = requests.get(url).json()
venues = results['response']['name']['location.lat']['location.lng']['city']
latlon.append(
{
'City': i,
'Latitude': ['venue.location.lat'],
'Longitude': ['venue.location.lng'],
'Category': ['venue.categories'],
'Pop': pop
})
dataset = pd.DataFrame(latlon)
Пробовал разные варианты, но всегда есть проблема. Желаемый результат:
| город | категория | широта | долгота | поп | | --- | --- | --- | --- | --- | | Ab c | Xyz | 123 | 123 | 123 | | Ab c | Zyx | 123 | 123 | 123 | | Cba | Xyz | 123 | 123 | 123 | ... наверное пара тысяч строк
Есть мысли?