使用 Python 从纬度和经度识别美国县
Identify US county from from latitude and longitude using Python
我正在使用以下代码来识别美国县。数据取自 Yelp,它提供 lat/lon 坐标。
id
纬度
经度
1
40.017544
-105.283348
2
45.588906
-122.593331
import pandas
df = pandas.read_json("/Users/yelp/yelp_academic_dataset_business.json", lines=True, encoding='utf-8')
# Identify county
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="http")
df['county'] = geolocator.reverse(df['latitude'],df['longitude'])
错误是“TypeError:reverse() 接受 2 个位置参数,但给出了 3 个”。
Nominatim.reverse
取坐标对;问题是您正在传递它 pandas 数据框列。 df['latitude']
这里指的是数据中的整列,而不仅仅是一个值,并且由于 geopy
独立于 pandas
,它不支持处理整列,而只是看到输入的数字无效。
相反,尝试遍历行:
county = []
for row in range(len(df)):
county.append(geolocator.reverse((df['latitude'][row], df['longitude'][row])))
(注意双括号。)
然后,将列插入数据框:
df.insert(index, 'county', county, True)
(index
应该是你想要的列位置,最后的boolean值表示允许重复值。)
我正在使用以下代码来识别美国县。数据取自 Yelp,它提供 lat/lon 坐标。
id | 纬度 | 经度 |
---|---|---|
1 | 40.017544 | -105.283348 |
2 | 45.588906 | -122.593331 |
import pandas
df = pandas.read_json("/Users/yelp/yelp_academic_dataset_business.json", lines=True, encoding='utf-8')
# Identify county
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="http")
df['county'] = geolocator.reverse(df['latitude'],df['longitude'])
错误是“TypeError:reverse() 接受 2 个位置参数,但给出了 3 个”。
Nominatim.reverse
取坐标对;问题是您正在传递它 pandas 数据框列。 df['latitude']
这里指的是数据中的整列,而不仅仅是一个值,并且由于 geopy
独立于 pandas
,它不支持处理整列,而只是看到输入的数字无效。
相反,尝试遍历行:
county = []
for row in range(len(df)):
county.append(geolocator.reverse((df['latitude'][row], df['longitude'][row])))
(注意双括号。)
然后,将列插入数据框:
df.insert(index, 'county', county, True)
(index
应该是你想要的列位置,最后的boolean值表示允许重复值。)