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

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

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

  1. search = SearchEngine(simple_zipcode=True)
  2. from uszipcode import Zipcode
  3. def get_zipcode(lat, lon):
  4. result = search.by_coordinates(lat = lat, lng = lon, returns = 1).to_json()
  5. return result[1].zipcode
  6. lat = noaa_df['lat']
  7. lon = noaa_df['lon']
  8. loc_df = pd.DataFrame({'lat':lat, 'lon':lon})
  9. 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() 方法是不必要的。
以下是一些应该有效的代码:

  1. from uszipcode import Zipcode, SearchEngine
  2. import pandas as pd
  3. lats = [34, 35, 36]
  4. lons = [-98, -99, -99.5]
  5. noaa_df = pd.DataFrame(list(zip(lats, lons)),
  6. columns =['lat', 'lon'])
  7. search = SearchEngine(simple_zipcode=True)
  8. def get_zipcode(lat, lon):
  9. result = search.by_coordinates(lat=lat, lng=lon)
  10. return result[1].zipcode
  11. noaa_df['zipcode'] = noaa_df.apply(lambda x: get_zipcode(x.lat, x.lon), axis=1)
  12. noaa_df

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

展开查看全部
lo8azlld

lo8azlld2#

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

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

相关问题