[英]Send post request with data in every row of dataframe in pandas
[英]Python Pandas - Send one post url request per dataframe row with custom delay between them
一方面,我們有這個熊貓數據框:
import pandas as pd
df = {"EventName":{"0":"Event234","1":"Event235","2":"Event236"},"EventType":{"0":"TypeA","1":"TypeA","2":"TypeB"},"Data1":{"0":"Data266276","1":"Data266277","2":"Data266278"},"Data2":{"0":"Data432562","1":"Data432563","2":"Data432564"}}
df = pd.DataFrame(df)
print(df)
返回此:
EventName EventType Data1 Data2
0 Event234 TypeA Data266276 Data432562
1 Event235 TypeA Data266277 Data432563
2 Event236 TypeB Data266278 Data432564
另一方面,我們具有以下功能,用於發送發布請求:
import time
import requests
# Test post url calls
# https://stackoverflow.com/questions/5725430/http-test-server-that-accepts-get-post-calls
AlertURL = "http://httpbin.org/anything"
def alert(msg):
nowdt = time.strftime("%m/%d/%Y %H:%M:%S")
payload = {"msg": str(nowdt)+", "+msg}
response = requests.post(AlertURL, payload)
print(response.text)
alert(df.EventName+" "+df.EventType+" "+df.Data1+" "+df.Data2)
最后一行正在發送一(1)個請求,其中包含所有數據幀行。
而且我們希望每個數據幀行發送一個請求(在這種情況下為3個),它們之間的延遲為2秒。
我們該怎么做呢?
使用具有數據框形狀的for循環遍歷每一行。 使用i指定您要發送的行。 最后使用time.sleep等待。
for i in range(df.shape[0]):
alert(df.EventName[i]+" "+df.EventType[i]+" "+df.Data1[i]+" "+df.Data2[i])
time.sleep(2)
您可以使用iterrows()遍歷數據幀和time.sleep()來以某種確定性的方式等待一段時間:
for index, row in df.iterrows():
alert(row['EventName']+" "+row['EventType']+" "+row['Data1']+" "+row['Data2'])
time.sleep(2) #2 seconds
如果您願意,可以將警報指令內的睡眠指令移至請求附近,以保持清楚。
for row in df.iterrows():
alert(row[0] + " " + row[1] + " " + row[2] + " " + row[3])
time.sleep(2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.