我也可以在0.13.1上重现它,但是在0.12或0.14(昨天发布)中不会发生此问题,因此在0.13中似乎是一个错误。 因此,也许可以尝试升级您的pandas版本,因为矢量化方法的应用速度更快(在我的计算机上为5s vs> 1min),并且在0.14上使用更少的峰值内存(200Mb vs 980Mb,%memit)
使用您的样本数据重复50000次(导致apply_id
450k行的df),并使用@jsalonen函数:
In [23]: pd.__version__
Out[23]: '0.14.0'
In [24]: %timeit df_train['Store'].astype(str) +'_' + df_train['Dept'].astype(str)+'_'+ df_train['Date_Str'].astype(str)
1 loops, best of 3: 5.42 s per loop
In [25]: %timeit df_train.apply(apply_id, 1)
1 loops, best of 3: 1min 11s per loop
In [26]: %load_ext memory_profiler
In [27]: %memit df_train['Store'].astype(str) +'_' + df_train['Dept'].astype(str)+'_'+ df_train['Date_Str'].astype(str)
peak memory: 201.75 MiB, increment: 0.01 MiB
In [28]: %memit df_train.apply(apply_id, 1)
peak memory: 982.56 MiB, increment: 780.79 MiB