首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么swifter比vanilla df.apply慢?

为什么swifter比vanilla df.apply慢?
EN

Stack Overflow用户
提问于 2019-10-10 02:53:53
回答 1查看 571关注 0票数 2

我有一个有一百万行的数据帧。我有一个单独的函数(我不能向量化)来应用到每一行。我研究了swifter,它承诺利用多个进程来加速计算。然而,在8核机器上,情况并非如此。

知道为什么吗?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2021-05-03 16:29:47

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58310509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档