通过应用 url 函数对数据帧进行最快的迭代



我需要通过为数据帧的每一行插入变量=var来从URL请求一些数据。我写了一个遍历每一行的函数

def df_eval(data):
data_eval = data.copy()
df_price = []
for i in data_eval.index:
var = data_eval.at[i, 'var']
url = ("http://blablabla/params&cid={}".format(var))
r_json = requests.get(url).json()
df = json_normalize(r_json)
df_price.append(df['price'])
print(df_price)
data_eval['price_eval'] = df_price
return data_eval

您能否为此操作建议一种更快的方法。目前,超过 23000 行大约需要 30 分钟。

你可以像这样平行化你的调用:

import random
import pandas as pd
import numpy as np
from multiprocessing import Pool
data_split = np.array_split(data, n_cores)
pool = Pool(n_cores)
data = pd.concat(pool.map(df_eval, data_split))
pool.close()
pool.join()

来源: https://towardsdatascience.com/make-your-own-super-pandas-using-multiproc-1c04f41944a1

最新更新