如何在python中使用多个参数从API端点正确获取数据?

我试图从具有多个参数的API端点获取数据,并从中构建大熊猫数据框。在尝试中,我传递了根URL,并使用自定义的值列表迭代了API端点的多个参数。我的目标是从特定的API端点获取数据,但将不同的值传递给其多个值,最后生成一个熊猫数据框。目前,我的代码向我返回了一个空的数据框。恐怕我尝试做错了什么。谁能指出我的代码出了什么问题?有没有人建议在熊猫中这样做的可能方法?有什么想法吗?

我目前的尝试

import pandas as pd
import json, requests

commodityCodes = [101, 102, 103, 104, 105]
countyCodes = [1220, 2010, 2050, 2110, 3330, 3370, 5210, 5460, 5490, 5520]
marketyear= list(range(2010,2020))

api_key = 'ec95a478-e46e-47f9-b57d-3d19012d527d'
rooturl = 'https://apps.fas.usda.gov/OpenData/api/esr/exports/'
headers = {'API_KEY': '{key}'.format(key=api_key)}

finaldf=pd.DataFrame()

for cc1 in commodityCodes:
    for cc2 in countyCodes:
        for year in marketyear:
            jsonData = requests.get(rooturl+'commodityCode/{}'.format(cc1)+ '/countryCode/{}'.format(cc2)+'/marketyear/{}'.format(year), headers=headers).json()
            df= pd.read_json(json.dumps(jsonData))
    finaldf.append(df)

但是我上面的代码向我返回了一个空的数据框。也许我使用了嵌套循环来执行此操作,这可能会导致问题。同时运行上面的代码需要几分钟。

什么是有效的方法?我的尝试哪里出错了?如何正确从API端点获取数据?有人可以建议这样做的可能方法吗?有任何想法吗?

马克西米利安·彼得斯(Maximilian Peters)

两个问题:

  1. 熊猫的追加返回一个新对象,它不会修改原始数据框
  2. 您附加在外部循环中,而不是在内部循环中

finaldf = pd.DataFrame()

for cc1 in commodityCodes:
    for cc2 in countyCodes:
        for year in marketyear:
            jsonData = requests.get(rooturl+'commodityCode/{}'.format(cc1)+ '/countryCode/{}'.format(cc2)+'/marketyear/{}'.format(year), headers=headers).json()
            df = pd.read_json(json.dumps(jsonData))
            finaldf = finaldf.append(df)

建议

一步构建网址,更易读

rooturl = 'https://apps.fas.usda.gov/OpenData/api/esr/exports/commodityCode/{}/countryCode/{}/marketyear/{}'
url = rooturl.format(cc1, cc2, year)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Flutter中使用提供程序正确获取API

如何在Android Studio中使用多个参数调用API

如何在方法中使用获取的数据作为参数

使用正确的数据获取多个 API

如何在 NodeJS 中使用 fetch 获取 API 数据

如何在查找中使用多个参数?

如何在 $_POST 中使用多个参数

如何在熊猫中使用API端点下载.csv文件

如何在Slack API和Python中使用参数?

如何在Python中使用Flask从URL获取JSON数据

如何使用 nextjs 从生产中的后端 API 端点获取数据

在Python中使用.format()方法时,如何在{}中使用多个参数

如何在Python中使用C API获取对象ID?

如何在 Python 中使用 Appsflyer API 获取指标

从多个 REST 端点获取 JSON 数据的正确方法

如何在Laravel中使用多个可选参数从数据库中搜索?

如何同时从限速API端点获取数据?

如何在 Angular 中使用多个 API 调用从数据库中查询嵌套数据?

如何在Swift 3.0中使用url通过异步获取多个JSON数据

如何在Python Luigi中使用参数

如何在Python中使用参数、函数

如何在GraphQL中使用参数正确进行订阅?

如何在Angular 5中使用jaxb和rest api正确检索数据?

如何在 React Native 中从 API 端点获取完整数据后显示数据?

在Spring MVC端点中使用多个Pageable参数

如何在Python 3中使用具有多个参数的多重处理?

如何在Python中使用getopt解析选项后的两个或多个参数?

如何使用React Hooks和Context API将来自在useEffect内部调用的多个端点的数据正确添加到状态对象?

如何在 Spring Boot Application 中使用 Rest Template 来管理多个端点?