Performance 在数据帧上使用.apply时自定义函数的性能

Performance 在数据帧上使用.apply时自定义函数的性能,performance,pandas,vectorization,apply,Performance,Pandas,Vectorization,Apply,正如标题所示,我想更好地了解应用于数据帧的自定义函数在速度方面的局限性。例如: df.apply(custom_function) 文档及其相关内容()在这个主题上有点摇摆不定,只是将此功能称为根据所使用的功能使其变慢。由于我不知道这种矢量化是如何发生的,因此对我的函数进行分析是一件费时的尝试和重复的事情,有人能指出一些经验法则来说明什么样的东西: 1) 不会降低速度 2) 大大减慢了整个过程 更准确地说:如果在函数中,我将东西保存到其他地方,我会受到严重损坏吗?我认为自定义函数速度减慢的主要

正如标题所示,我想更好地了解应用于数据帧的自定义函数在速度方面的局限性。例如:

df.apply(custom_function)
文档及其相关内容()在这个主题上有点摇摆不定,只是将此功能称为根据所使用的功能使其变慢。由于我不知道这种矢量化是如何发生的,因此对我的函数进行分析是一件费时的尝试和重复的事情,有人能指出一些经验法则来说明什么样的东西: 1) 不会降低速度 2) 大大减慢了整个过程


更准确地说:如果在函数中,我将东西保存到其他地方,我会受到严重损坏吗?

我认为自定义函数速度减慢的主要原因是内置方法是在Cython(Python的C扩展)中实现的。任何纯粹的pythonic你会使用将大大低于内置的速度。如果您设法使用同样在Cython中实现的扩展来满足您的需求,那么您可能会很幸运,并且具有相对良好的性能。根据熊猫文档,“最终的cythonized解决方案比纯python快100倍左右”()

通常,我会避免在apply函数中写入值。我无法想象你为什么要这么做。如果需要有关返回序列的信息,最好在应用完成后在retrospect中对其进行测试