簡體   English   中英

Python 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM