每行Pandas DataFrame的Rest调用

3

我的Pandas数据框有一百万行。我需要在每一行内调用一个rest API调用,并需要捕获响应。每次rest调用平均需要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'] 

案例三:并行应用

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

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

有没有更好的方法来加快这个过程?

你解决了吗? - Lonely Planeteer
1个回答

1

它不可能比每个API调用所花费的累计时间更快。所以我的建议是首先做这些:

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

然后将它们添加到你的df中:
df['response_value'] = responses

这将非常快。这似乎是你能得到的最快的。


我对操作顺序不确定,你可以通过打印语句进行测试。这样你就可以控制事情发生的时间。 - Josh Friedlander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接