首页 > 解决方案 > 通过应用 url 函数对数据帧进行最快的迭代

问题描述

我需要通过为我的数据框的每一行插入一个 variable=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 分钟。

标签: python-3.xpandasloopsiteration

解决方案


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

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


推荐阅读