我正在嘗試通過我擁有的物理地址獲取場地的經度和緯度。
為此,我正在使用 GoogleMaps API。
在執行以下代碼時,我一直試圖直接將經度和緯度插入到數據框的空列中。
import pandas as pd
import googlemaps
locations = df['ADDR']
df['lat'] = ""
df['lng'] = ""
i = 0
for location in locations:
i = i + 1
try:
print("%d indexing %s location" % (i, location))
geo_location = maps.geocode(location)[0].get('geometry')
print(geo_location['location']['lat'], geo_location['location']['lng'])
df['lat'].append(geo_location['location']['lat'])
df['lng'].append(geo_location['location']['lng'])
print(df)
except IndexError:
print("Address was wrong...")
except Exception as e:
print("Unexpected error occurred.", e)
當我執行它時,我得到“無法連接 '<class 'float'>' 類型的對象;只有 Series 和 DataFrame objs 是有效的”。
我一開始以為是因為從GoogleMaps獲取信息的時候,是json格式的。
所以,我嘗試添加以下內容
geo_lat = pd.to_Series(geo_location['location']['lat'], geo_location(['location']['lng'])
然後我得到一個錯誤“列表索引必須是整數或切片,而不是 str”。
任何人都可以提供一種方法來正確插入 df['lat'], df['lng'] 物理地址 df['ADDR'] 旁邊的值嗎?
要在 DataFrame 中添加新列並更新其值,您可以在循環中使用它,而無需先驗定義列:
for i, location in enumerate(locations):
df.at[i, 'lat'] = geo_location['location']['lat']
df.at[i, 'lng'] = geo_location['location']['lng']
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句