gpt4 book ai didi

python - Pandas 申请 - 重新使用申请结果以节省时间

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:52 27 4
gpt4 key购买 nike

我正在尝试使用 apply 函数在相对较小(~600 行)的数据框子集上创建一个新列,它可以工作,但速度很慢,因为 apply 函数计算量大,我无法创建这个黑盒功能更快/更简单。

但是,这个黑盒函数返回的很多结果实际上是相同的(接近 90%),因为输入是相同的。因此,有没有一种方法可以在给定输入相同的情况下简单地重复使用返回值以节省时间?

这是有效但速度较慢的代码:

df.loc[df['number']>=10, 'value'].apply(lambda x: black_box(x).get())

同样,value 列中的大多数值都是相同的,从而产生相同的输出。

最佳答案

MVCE 示例:

df = pd.DataFrame({'key':np.random.randint(1,10,60000),'result':np.nan})

def factorial(x): #Black box
accum = 1
for i in range(1,x+1):
accum *= i
return accum

%timeit df['result'] = df.key.apply(lambda x: factorial(x))

10 个循环,3 个循环中的最佳:每个循环 120 毫秒

使用黑盒创建唯一值字典:

def fact_d(values):
d = {}
for i in values:
d[i] = factorial(i)
return d

dict = fact_d((df.key.unique().tolist()))

将字典映射到数据框:

%timeit df['result'] = df.key.map(dict)

100 个循环,3 个循环中的最佳:每个循环 6.22 毫秒

关于python - Pandas 申请 - 重新使用申请结果以节省时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45168334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com