我的 Pandas 数据框有一百万行。我必须在每一行的函数内调用rest API调用,并且需要捕获响应。每个休息电话平均需要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)
他们有什么更好的方法来加快这一过程吗?
最佳答案
它不能快于每个API调用花费的累计时间。所以我的建议是先做这些:
responses = [request(x).json() for x in df['request_filed'].values]
然后将它们添加到您的df中:
df['response_value'] = responses
这将是非常快的。看来您将获得最快的速度。
关于python - 每行Pandas DataFrame Rest Call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60828259/