这是第一篇:
t1 = time.time()df[new_col] = np.where(df[col] < j,val_1,val_2)t2 = time.time()ts.append(t2 - t1)
在ts我有以下价值观:
0.0007321834564208984,0.0002918243408203125,0.0002799034118652344
相比之下,这部分代码:
t1 = time.time()df['new_col'] = np.where((df[col] >= i1) & (df[col] < i2),val,df.new_col)t2 = time.time()ts.append(t2 - t1)
创建使用以下值填充的ts:
0.11008906364440918,0.09556794166564941,0.08580684661865234
我无法弄清楚第一次和第二次任务之间的本质区别.
在这两种情况下,df应该是相同的.
添加
事实证明,本质区别并不在我所看到的地方.在快速版本的代码我有:
df = inp_df.copy()
在类方法的开头(其中inp_df是方法的输入数据框).在慢速版本中,我直接在输入数据框上 *** 作.复制输入数据帧并对其进行 *** 作后,它变得很快.
解决方法 第一次只使用一个条件,因此它应该比检查这两个条件更快.简单的例子使用ipython:In [3]: %timeit 1 < 2 20.4 ns ± 0.434 ns per loop (mean ± std. dev. of 7 runs,10000000 loops each)In [4]: %timeit 1 >= 0 & 1 < 2 37 ns ± 1.37 ns per loop (mean ± std. dev. of 7 runs,10000000 loops each)总结
以上是内存溢出为你收集整理的python – 为什么在一个案例中快速更改pandas数据框的列中的值而在另一个案例中更慢?全部内容,希望文章能够帮你解决python – 为什么在一个案例中快速更改pandas数据框的列中的值而在另一个案例中更慢?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)