Как я могу исправить ошибку Keyerror: Группы? - PullRequest
0 голосов
/ 09 июля 2020

Я боролся с этим фрагментом кода, где мне нужно получить данные о индийских ресторанах в Нью-Йорке C, однако я получаю сообщение об ошибке Keyerror: Groups. Я надеюсь, что кто-нибудь может помочь мне в этом вопросе. Я разместил код вместе с сообщением, в котором вы видите ошибку.

def get_venues(lat,lng):
    
    #set variables
    radius=1000
    LIMIT=100
    CLIENT_ID = ['FRI4BGBGLDEYD5LXOQC4YHL2JSBGEVH3YZOOWYAYQAER3JT1'] # your Foursquare ID
    CLIENT_SECRET = ['Z30R3SJZJ1STXSM0HYE2QCH3KXK2XNJI210NQXOYBHWHOHMO'] # your Foursquare Secret
    VERSION = '20200401' # Foursquare API version
    
    #url to fetch data from foursquare api
    url = 'https://api.foursquare.com/v2/venues/explore?&client_id={}&client_secret={}&v={}&ll={},{}&radius={}&limit={}'.format(
            CLIENT_ID, 
            CLIENT_SECRET, 
            VERSION, 
            lat, 
            lng, 
            radius, 
            LIMIT)
    
    # get all the data
    results = requests.get(url).json()
    venue_data = results["response"]['groups'][0]['items']
    venue_details = []
    for row in venue_data:
        try:
            venue_id=row['venue']['id']
            venue_name=row['venue']['name']
            venue_category=row['venue']['categories'][0]['name']
            venue_details.append([venue_id,venue_name,venue_category])
        except KeyError:
            pass
        
    column_names=['ID','Name','Category']
    df = pd.DataFrame(venue_details,columns=column_names)
    return df
# prepare neighborhood list that contains indian resturants
column_names=['Borough', 'Neighborhood', 'ID','Name']
indian_rest_ny=pd.DataFrame(columns=column_names)
count=1
for row in new_york_data.values.tolist():
    Borough, Neighborhood, Latitude, Longitude=row
    venues = get_venues(Latitude,Longitude)
    indian_resturants=venues[venues['Category']=='Indian Restaurant']   
    print('(',count,'/',len(new_york_data),')','Indian Resturants in '+Neighborhood+', '+Borough+':'+str(len(indian_resturants)))
    for resturant_detail in indian_resturants.values.tolist():
        id, name , category=resturant_detail
        indian_rest_ny = indian_rest_ny.append({'Borough': Borough,
                                                'Neighborhood': Neighborhood, 
                                                'ID': id,
                                                'Name' : name
                                               }, ignore_index=True)
    count+=1
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-10-7a917332b722> in <module>
      5 for row in new_york_data.values.tolist():
      6     Borough, Neighborhood, Latitude, Longitude=row
----> 7     venues = get_venues(Latitude,Longitude)
      8     indian_resturants=venues[venues['Category']=='Indian Restaurant']
      9     print('(',count,'/',len(new_york_data),')','Indian Resturants in '+Neighborhood+', '+Borough+':'+str(len(indian_resturants)))

<ipython-input-3-6da7f127fa47> in get_venues(lat, lng)
     21     results = requests.get(url).json()
     22     #results = requests.get(url).json()["response"]['groups'][0['items']
---> 23     venue_data = results["response"]['groups'][0]['items']
     24     venue_details = []
     25     for row in venue_data:

KeyError: 'groups'

1 Ответ

0 голосов
/ 09 июля 2020

A KeyError вызывается только тогда, когда ключ отсутствует в словаре. Единственный способ возникновения этой ошибки - отсутствие ключа Groups. Убедитесь, что есть Groups, устраните проблему.

...