python-3.x - 通过应用 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 分钟。
解决方案
你可以像这样并行化你的调用:
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
推荐阅读
- r - 在 R 库中查找数据集
- node.js - 为什么 npm init 在 package.json 中设置主键?
- ibm-mq - 如何恢复队列中的备份消息
- vba - 使用 VBA 在 Lotus Notes 上附加文件
- javascript - 如何使用 jQuery 覆盖一个类
- sql - 需要实现Filter,criteria spring data
- javascript - 我如何在 react.js 上的选择选项 html 标签中传输对象
- php - 由于自定义主题问题,Wordpress 媒体库不会引导媒体
- c# - C# 将字符串解析为表达式
- angular - 在 Angular 6 中使用具有输入属性的可重用组件