gpt4 book ai didi

python - 为什么 swifter 比 vanilla df.apply 慢?

转载 作者:行者123 更新时间:2023-12-04 17:32:22 24 4
gpt4 key购买 nike

我有一个包含 100 万行的数据框。我有一个函数(我无法矢量化)应用于每一行。我研究了 swifter,它 promise 利用多个进程来加速计算。然而,在 8 核机器上,情况并非如此。

知道为什么吗?

def parse_row(n_print=None):
def f(row):
if n_print is not None and row.name % n_print == 0:
print(row.name, end="\r")
return Feature(
geometry=Point((float(row["longitude"]), float(row["latitude"]))),
properties={
"water_level": float(row["water_level"]),
"return_period": float(row["return_period"])
}
)
return f

In [12]: df["feature"] = df.swifter.apply(parse_row(), axis=1)
Dask Apply: 100%|████████████████████████████████████████| 48/48 [01:19<00:00, 1.65s/it]

In [13]: t = time(); df["feature"] = df.apply(parse_row(), axis=1); print(int(time() - t))
46

最佳答案

这主要取决于所涉及的处理能力以及矢量化/并行处理/优化是否可以改善问题。有时它根本不是解决方案。
还要记住,swifter 需要时间来计算它的预计工作时间跨度,有时 df.apply 会更快,因为它不必计算并且优化可能也没有帮助。

关于python - 为什么 swifter 比 vanilla df.apply 慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58310509/

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