【问题标题】:Python request APIPython 请求 API
【发布时间】:2020-11-09 03:47:45
【问题描述】:

我正在尝试从 NOAA API 检索一些数据,但有一个我无法解决的错误

    location=[]
def find_xy(Name, lat, long):
    api = url+str(lat)+','+str(long)
    r = requests.get(api).json()
    x = r['properties']['gridX']
    y = r['properties']['gridY']
    xy=(Name, str(lat), str(long), x, y)
    location.append(xy)

for i in dfgrid:
    Name = dfgrid['Name']
    lat =  dfgrid['Lat']
    long =  dfgrid['Long']    
    find_xy(Name,lat,long)

dfgrid 中有一个 lat 和 longs 列表,我想遍历每个坐标并在 NOAA API 中获取 gridX 和 gridY 值

我可以使用一个示例提取此数据,但是当我尝试遍历整个 dfgrid 时,我收到以下错误

----------------------------------- ---------------------------- KeyError Traceback(最近一次调用 最后)在 3 纬度 = dfgrid['纬度'] 4 长 = dfgrid['长'] ----> 5 find_xy(姓名,纬度,经度)

in find_xy(名称,纬度,经度) 3 api = url+str(lat)+','+str(long) 4 r = requests.get(api).json() ----> 5 x = r['properties']['gridX'] 6 y = r['属性']['gridY'] 7 xy=(姓名、str(lat)、str(long)、x、y)

KeyError: '属性'

【问题讨论】:

  • 在尝试访问r[‘properties’] 之前,您是否尝试过进行一些简单的调试,例如打印r?或者尝试防御:使用r.get(‘properties’) 并检查结果不是None

标签: python api dataframe loops request


【解决方案1】:

解决了这个问题

dfgrid = pd.DataFrame(df,columns=['Name','Lat','Long'])

dfgrid['Lat']=dfgrid['Lat'].astype(str)

dfgrid['Long']=dfgrid['Long'].astype(str)

dfgrid['coordinate']= dfgrid['Lat']+","+dfgrid['Long']

我之前所做的是添加纬度和经度,即使我 str() 纬度和经度浮点数...这给出了 API 请求错误。仍在尝试处理为什么 str(Lat)+","+str(Long) 不起作用,但无论如何我找到了解决方案。

感谢所有试图提供帮助的人。非常感谢。 迈克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2021-05-15
    相关资源
    最近更新 更多