我有一个基本的Pandas DataFrame,每个记录有3个数据点(列)。这些数据点需要使用JSON格式并使用请求库作为HTTP POST请求发送,并且在运行代码时,它需要遍历DataFrame中的每个记录(10个df记录= 10个POST请求)。我能够成功发送单个请求,但是在使用下面的循环时,出现错误:“ ValueError:太多值无法解包(预期2)。”
import pandas as pd
import requests
import json
d = {'UID': [1111,2222,3333], 'ID':[29,29,30], 'updatedDate':['2020-04-13','2020-04-13','2020-04-13']}
df = pd.DataFrame(data=d)
for row in df.itertuples(index=False):
payload = f'{{"uniqueIds": ["{row.UID}"], "changes": {{"style": {{"id": {row.ID}}}}}, "updatedDate": "{row.updatedDate}"}}'
requests.post(url,headers=(custom headers),data=payload)
我需要在POST请求中发送的格式正确的JSON看起来像这样(上面的f字符串正确地格式化了此格式:]
{“ uniqueIds”:[“ 1111”],“ update”:{“ style”:{“ id”:29}},“ updatedDate”:“ 2020-04-13”}
{“ uniqueIds”:[“ 2222”],“ update”:{“ style”:{“ id”:29}},“ updatedDate”:“ 2020-04-13”}
{“ uniqueIds”:[“ 3333”],“ update”:{“ style”:{“ id”:30}},“ updatedDate”:“ 2020-04-13”}
如果我创建一个字符串变量payload = '{"uniqueIds": ["1111"], "update": {"style": {"id": 29}}, "updatedDate": "2020-04-13"}'
并发送完全相同的请求请求(独立,在for循环之外),则该请求成功。如上所述,将其包含在for循环中会导致指定的错误。
我一直在寻找类似的错误,但还不能完全解决。我的具体问题是:如何循环遍历DataFrame以指定的JSON格式发送这些请求?我对其他方法持开放态度-我的基本要求是从DataFrame开始,在正文中使用特定格式的JSON发送HTTP POST,并执行与DataFrame中记录相同的次数。抱歉,但是由于隐私保护,我无法提供完全可复制的示例(网址/标头)。我希望所提供的信息足够,或者过去有人遇到过类似问题。预先感谢您的帮助。
如果有人遇到这个问题,解决方案非常简单,正如我认为的那样。我的循环末尾需要continue
语句。
for row in df.itertuples(index=False):
payload = f'{{"uniqueIds": ["{row.UID}"], "changes": {{"style": {{"id": {row.ID}}}}}, "updatedDate": "{row.updatedDate}"}}'
requests.post(url,headers=(custom headers),data=payload)
continue