我期待优化我将 lambda 函数应用于 pandas 数据帧的方式,以便我可以执行它(1)更快,(2)消耗更少的资源。
首先,如果我apply(lambda...
很慢,但它大部分时间都不会中断。
寻找优化方法,我发现更快,我阅读了文档,对我来说听起来很棒,所以我也尝试swifter.apply(lambda...
了这个执行爆炸,它很快耗尽了内存
我开始深入挖掘,发现了类似swifter.set_npartitions()
和其他听起来很有趣的方法https://github.com/jmcarpenter2/swifter/blob/master/docs/documentation.md
但!本文档仅显示“如何实现它”而不是“为什么实现它”。
我正在尝试优化具有 16 GB 内存、Geforce RTX 2060 和良好处理器的电脑。但是我无法就如何做到这一点得出正确的结论。
这是我的示例代码:
import pandas
import swifter
# Option 1
df[['sentiment_relation', 'sentiment_relation_data']] = df.apply(
lambda x: self.apply_concordance(x['concordance_input']), axis=1, result_type='expand')
# Option 2, 3, 4...
df[['sentiment_relation', 'sentiment_relation_data']] = df.swifter.set_npartitions(8).apply(
lambda x: self.apply_concordance(x['concordance_input']), axis=1, result_type='expand')
该apply_concordance()
函数来自 ML 训练模型,我认为与这个问题无关,但重要的是它是一个资源消耗者,我无法更改或优化它