我目前在此错误上停留了一段时间。
lond数据帧有6807行x 15列。列名称为邻居,邻居列表,平均价格,邮政编码,自治市镇,邻居邮政编码,纬度,经度,最近的火车站,车站到伦敦的距离,伦敦地区,物业类型,房型,价格,位置点评评分。
我要实现的目的是使用该功能执行以下操作。
请帮助我。这是我的第一个如此庞大的项目。
#Defining the to get nearby venues
def getNearbyVenues(names, latitudes, longitudes, radius=100):
venues_list=[]
for name, lat, lng in zip(names, latitudes, longitudes):
print(name)
# Creating the API request URL
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)
# Making the GET request to extract json data
#results = requests.get(url).json()["response"]['groups'][0]['items']
results = requests.get(url).json()["response"]#['groups'][0]['items']
# return only relevant information for each nearby venue
venues_list.append([(
name,
lat,
longi,
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 = ['Neighbourhood',
'Neighbourhood Latitude',
'Neighbourhood Longitude',
'Venue',
'Venue Latitude',
'Venue Longitude',
'Venue Category']
return(nearby_venues)
#Calling the getNearbyVenues function for each neighbourhood to create a dataframe lon_venues
lond = lon_neighbs201.head(600)
LIMIT = 10
lon_venues = getNearbyVenues (names = lond['Neighbourhood'],
latitudes = lond['Latitude'],
longitudes = lond['Longitude']
)
lon_venues
答案 0 :(得分:0)
我认为,更直观的解释是:
将循环中的追加更改为 extend 。这样, venues_list 元组列表。每个内部元组将包含每一行的数据,并且 外部列表将是“行”的列表。
创建 nearby_venues 时,仅传递 venues_list 作为第一个 参数(而不是到目前为止的列表理解)。
无需在单独的指令中设置列名。 列列表可以在指令中作为 columns 参数传递 创建DataFrame。
因此, nearby_venues 的创建应如下所示:
nearby_venues = pd.DataFrame(venues_list, columns = ['Neighbourhood',
'Neighbourhood Latitude', 'Neighbourhood Longitude', 'Venue',
'Venue Latitude', 'Venue Longitude', 'Venue Category'])