ValueError:长度不匹配:预期轴有0个元素,新值有7个元素

2024-04-20 13:18:00 发布

您现在位置:Python中文网/ 问答频道 /正文

def getNearbyVenues(names, latitudes, longitudes, radius=500):

    venues_list=[]
    for name, lat, lng in zip(names, latitudes, longitudes):
        print(name)

        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)

        results = requests.get(url).json()["response"]['groups'][0]['items']

        venues_list.append([( name, lat, lng, v['venue']['name'], v['venue']['location']['lat'], v['venue']['location']['lng'], v['venue']['categories'][0]['name']) for v in results])


    nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])
    nearby_venues.columns = ['Neighborhood', 'Neighborhood Latitude', 'Neighborhood Longitude', 'Venue', 'Venue Latitude', 'Venue Longitude', 'Venue Category']


    return(nearby_venues)

当我调用上面的函数时

toronto_venues = getNearbyVenues(names=df['Neighborhood'], latitudes=df['Latitude'],longitudes=df['Longitude'])

我犯了以下错误

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-43-0a244f551e86> in <module>
      2 #nearyby_venues
      3 #toronto_venues = pd.DataFrame(pd.np.empty((0, 7)))
----> 4 toronto_venues = getNearbyVenues(names=df['Neighborhood'], latitudes=df['Latitude'],longitudes=df['Longitude'])

<ipython-input-42-217083dbcb80> in getNearbyVenues(names, latitudes, longitudes, radius)
     14 
     15     nearby_venues = pd.DataFrame([item for venue_list in venues_list for item in venue_list])
---> 16     nearby_venues.columns = ['Neighborhood', 'Neighborhood Latitude', 'Neighborhood Longitude', 'Venue', 'Venue Latitude', 'Venue Longitude', 'Venue Category']
     17 
     18 

~\Anaconda3\lib\site-packages\pandas\core\generic.py in __setattr__(self, name, value)
   5285         try:
   5286             object.__getattribute__(self, name)
-> 5287             return object.__setattr__(self, name, value)
   5288         except AttributeError:
   5289             pass

pandas\_libs\properties.pyx in pandas._libs.properties.AxisProperty.__set__()

~\Anaconda3\lib\site-packages\pandas\core\generic.py in _set_axis(self, axis, labels)
    659 
    660     def _set_axis(self, axis, labels) -> None:
--> 661         self._data.set_axis(axis, labels)
    662         self._clear_item_cache()
    663 

~\Anaconda3\lib\site-packages\pandas\core\internals\managers.py in set_axis(self, axis, new_labels)
    176         if new_len != old_len:
    177             raise ValueError(
--> 178                 f"Length mismatch: Expected axis has {old_len} elements, new "
    179                 f"values have {new_len} elements"
    180             )

ValueError: Length mismatch: Expected axis has 0 elements, new values have 7 elements

从堆栈跟踪中我了解到,问题是由nearby_venues数据帧引起的,我分配列的方式是错误背后的主要原因。我能做些什么来解决这个问题


Tags: nameinselfdffornameslistlatitude