如何将 Content-Type: application/x-www-form-urlencoded 格式的数据帧行迭代到 API POST 请求中?
Posted
技术标签:
【中文标题】如何将 Content-Type: application/x-www-form-urlencoded 格式的数据帧行迭代到 API POST 请求中?【英文标题】:How to iterate rows of dataframe in Content-Type: application/x-www-form-urlencoded format into API POST request? 【发布时间】:2018-09-01 15:23:25 【问题描述】:我有一个如下所示的数据框:
email p[1]:
a@a.com 1
b@b.com 2
p[1]
字段是列表 ID。
如何一次将这一数据帧的行传递到 Content-Type: application/x-www-form-urlencoded
格式的 API 发布请求中?
当我尝试这段代码时没有数据框,它可以工作:
headers =
'content-type': 'application/x-www-form-urlencoded',
params =
'email': 'peach@peach.com',
' p[1]': '1',
url = 'https://URL/admin/api.php?api_action=contact_add&api_output=json&api_key=123ABC'
resp = requests.post(url, data=params, headers=headers)
如何传递数据帧的每一行以及如何将数据帧格式转换为params
等价格式?
此 api 不接受批量上传。可以在此处找到有关 API 的更多信息。 https://www.activecampaign.com/api/example.php?call=contact_add
提前谢谢你。
【问题讨论】:
【参考方案1】:如果你想一次做一个,你想要DataFrame.iterrows
import pandas as pd
df = pd.DataFrame('email': ['a@a.com', 'b@b.com'], 'p[1]': [1,2])
for index, row in df.iterrows():
params = 'email': row.email, 'p[1]': row['p[1]']
print(params)
'email': 'a@a.com', 'p[1]': 1
'email': 'b@b.com', 'p[1]': 2
然后,您可以将params
传递给循环内任何您想要的对象。
【讨论】:
@RustyShackleford 这个答案在正确的轨道上,但你可以通过将 dict 转换为 pandas 来加快速度:for params in df.to_dict(orient='records'): ...
以上是关于如何将 Content-Type: application/x-www-form-urlencoded 格式的数据帧行迭代到 API POST 请求中?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 报错 o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applica
如何使用 Spring Boot RestTemplate 将 Microsoft Office Mime 类型作为 Content-Type 标头发送