gpt4 book ai didi

python - 如何使用带有 Pandas 数据帧的请求来创建多个 Get http 请求?

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:04 27 4
gpt4 key购买 nike

我是一名业余程序员,想解决我遇到的现实问题。我是一个软件系统的用户,该系统公开了一个 API,允许用户使用 Get 更新/添加记录。我已将想要修改系统的数据导入 Pandas,但不知道迭代行并动态创建 URL 的最佳方法。

我想为每一行创建一个类似于以下内容的 URL:

http://fakesite.org/servlet/Erp?_form=AD1&_EVT=ADD&_RTN=DATA&FC=Add&_f1=A&_f3=HELLO&f16=EA&_OUT=XML&_EOT=TRUE

下面我已经包含了代码设置的开头:

import pandas as pd
import requests as r

site = 'http://fakesite.org/servlet/Erp?'

payload = dict()
payload['_FORM'] = 'AD1'
payload['_EVT'] = 'ADD'
payload['_RTN'] = 'DATA'
payload['FC'] = 'Add'
payload['_OUT'] = 'XML'
payload['_EOT'] = 'TRUE'

data = {'F1': ['A','A','A'], 'F3': ['HELLO', 'GOODBYE', 'HELLO_AGAIN'], 'F16': ['EA','BX','CA']}

df = pd.DataFrame(data)

我创建的“有效负载”字典是所有不会因请求而更改的参数,这些参数本质上是硬编码的,而不是 pandas 数据框架的一部分。我最终会将此字典与数据帧每行中的值结合起来,然后再将其传递给 request.get

我认为我需要使用 apply 或 itterrows 但我似乎无法弄清楚。

我应该如何编写这段代码?

最佳答案

不确定为什么要使用 pandas,您可以获取要迭代的有效负载列表

F1  = ['A','A','A']
F3 = ['HELLO', 'GOODBYE', 'HELLO_AGAIN']
F16 = ['EA','BX','CA']

payloads = [dict(payload,**{'F1': F1, 'F3': F3, 'F16': F16}) for F1,F3,F16 in zip(F1,F3,F16)]

编辑:如果您必须使用 pandas,则可以使用 to_dict('records'),如 this stackoverflow question 中所述。 。然后,文档解释了如何 formulate the actual requests.

payloads = [dict(payload, **params) for params in df.to_dict('records')]
gets = [requests.get(site, params=payload) for payload in payloads]
# to check that the urls were as you thought
for r in gets:
print r.url

关于python - 如何使用带有 Pandas 数据帧的请求来创建多个 Get http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670697/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com