3
pandas
veri çerçevesindeki her satır için ülke adını geopy
kullanarak belirlemeyi deniyorum. Ne var olduğunu:pandas veri çerçevesindeki koordinatlardan ülke adını bulmak için geopy kullanarak
import pandas as pd
from geopy.geocoders import GoogleV3
df = pd.DataFrame({'ser_no': [1, 1, 1, 2, 2, 2],
'lat': [53.57, 35.52, 35.53, 54.66, 54.67, 55.8],
'lon': [-117.20, -98.29, -98.32, -119.48, -119.47, -119.46]})
def get_country(locations):
locations = geolocator.reverse(row['lat'], row['lon'], timeout = 10)
for location in locations:
for component in location.raw['address_components']:
if 'country' in component['types']:
return component['long_name']
my_key = my_api_key
geolocator = GoogleV3(my_key, proxies ={"http": 'my proxy',
"https": 'my proxy'})
df['country'] = df.apply(lambda row: get_country(row), axis = 1)
Bu Herhangi bir hata oluşmuş
lat lon ser_no country
0 53.57 -117.20 1 <function get_country at 0x000000000F6F9C88>
1 35.52 -98.29 1 <function get_country at 0x000000000F6F9C88>
2 35.53 -98.32 1 <function get_country at 0x000000000F6F9C88>
3 54.66 -119.48 2 <function get_country at 0x000000000F6F9C88>
4 54.67 -119.47 2 <function get_country at 0x000000000F6F9C88>
5 55.80 -119.46 2 <function get_country at 0x000000000F6F9C88>
döndürür ama benim çıkış kullanışlı değildir. Yalnızca yanlış bir şekilde dönüp dönmediğimi veya apply
numaralı telefonumda yanlış bir şey olup olmadığından emin değilim.
def get_country(row):
pos = str(row['lat']) + ', ' + str(row['lon'])
locations = geolocator.reverse(pos, timeout = 10)
#... rest of func the same
sizin işlev imzası yerine locations' 'den row'' olmamalıdır: Bu şekilde işlevini değiştirmek gerekir böylece – EdChum
'get_country (konumları)' 'get_country (row)' olmalıdır? – EdChum
Buna nasıl değiştirilir: 'df ['ülke'] = df.apply (lambda satırı: get_country (satır), eksen = 1)' bir fark yaratmamalı ama burada fonksiyon argümanını değiştirerek – EdChum