尝试反转地理代码以获取zipcode,继续获取属性错误,有什么建议吗?

mw3dktmi  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(310)

我正在尝试查找数据框中位置的邮政编码。我有三个位置和它们的纬度和经度,我把它们命名为纬度和经度。

search = SearchEngine(simple_zipcode=True)
from uszipcode import Zipcode

def get_zipcode(lat, lon):
    result = search.by_coordinates(lat = lat, lng = lon, returns = 1).to_json()
    return result[1].zipcode
lat = noaa_df['lat']
lon = noaa_df['lon']

loc_df = pd.DataFrame({'lat':lat, 'lon':lon})

loc_df['zipcode'] = df.apply(lambda x: get_zipcode(x.lat,x.lon), axis=1)

我是python新手,我正在使用uszipcodes搜索引擎函数从纬度和经度反转地理编码以获得邮政编码,我的最终目标是将每个位置的邮政编码添加到数据框中的新列中。但是,我一直遇到这个错误: AttributeError: 'Series' object has no attribute 'lat'

eblbsuwk

eblbsuwk1#

我认为问题在于 df 是一个系列,不是一个 Dataframe 。此外, .to_json() 方法是不必要的。
以下是一些应该有效的代码:

from uszipcode import Zipcode, SearchEngine
import pandas as pd

lats = [34, 35, 36]
lons = [-98, -99, -99.5]

noaa_df = pd.DataFrame(list(zip(lats, lons)),
                       columns =['lat', 'lon'])

search = SearchEngine(simple_zipcode=True)

def get_zipcode(lat, lon):
    result = search.by_coordinates(lat=lat, lng=lon)
    return result[1].zipcode

noaa_df['zipcode'] = noaa_df.apply(lambda x: get_zipcode(x.lat, x.lon), axis=1)
noaa_df

请注意,邮政编码列表的索引为零,因此上面的代码将提取满足搜索条件的第二个邮政编码。第一个邮政编码是 result[0].zipcode .

lo8azlld

lo8azlld2#

我认为您正在尝试将一个系列放入 Dataframe 中。
试试这个

loc_df['zipcode'] = loc_df['zipcode'].apply(lambda x: get_zipcode(x.lat,x.lon), axis=1)

相关问题