每行上都有一个数据帧Rest调用

2024-06-24 13:42:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的熊猫数据框有一百万行。我必须在每一行的函数中调用RESTAPI调用,并且需要捕获响应。每次休息通话平均需要2秒的时间。但我试过的以下案例非常缓慢

案例1:适用

def predict(x):
     res = request("XYZ")
     return res.json()

df['response_value'] = df.apply(lambda x:predict(x['request_filed']),axis=1) 

案例2:矢量化而非应用

def predict(x):
     l = []
     for each in x
         l.append(request("XYZ"))
     return l

df['response_value'] = predict(df['request_filed'] 

案例3:并行应用

def predict(x):
     res = request("XYZ")
     return res.json()

df['response_value'] = df.parallel_apply(lambda x:predict(x['request_filed']),axis=1) 

他们有没有更好的方法来加速这个过程


Tags: lambdajsondfreturnvalueresponserequestdef
1条回答
网友
1楼 · 发布于 2024-06-24 13:42:15

它不能超过每次API调用所花费的累计时间。因此,我的建议是,首先要做到:

responses = [request(x).json() for x in df['request_filed'].values]

然后将它们添加到您的df中:

df['response_value'] = responses

这将是非常快的。这似乎是你能达到的最快速度

相关问题 更多 >