我需要通过为数据帧的每一行插入变量=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