首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么熊猫的地图要比列表理解慢?

为什么熊猫的地图要比列表理解慢?
EN

Stack Overflow用户
提问于 2016-10-15 08:58:11
回答 1查看 1.3K关注 0票数 1

有人知道为什么熊猫/矮胖图比清单理解慢吗?我想我可以优化我的代码,用地图代替列表理解。因为map不需要列表附加操作。

这里有一个测试:

代码语言:javascript
运行
复制
df = pd.DataFrame(range(100000))

列表理解:

代码语言:javascript
运行
复制
%timeit -n 10 df["A"] = [x for x in df[0]]

#10 loops, best of 3: 550 ms per loop

Pandas地图

代码语言:javascript
运行
复制
%timeit -n 10 df["A"] = df[0].map(lambda x: x)

#10 loops, best of 3: 797 ms per loop

基于注释列表理解和映射调用相同函数f的更新,列表理解速度更快。

代码语言:javascript
运行
复制
def f(x):
    return x

%timeit -n 100 df["A"] = df[0].map(f)

#100 loops, best of 3: 475 ms per loop

%timeit -n 100 df["A"] = [f(x) for x in df[0]]

#100 loops, best of 3: 399 ms per loop
EN

回答 1

Stack Overflow用户

发布于 2016-10-15 09:06:08

以下是我的研究结果:

清单理解:

代码语言:javascript
运行
复制
In [33]: %timeit df["A"] = [x for x in df[0]]
10 loops, best of 3: 72.6 ms per loop

简单的列赋值:

代码语言:javascript
运行
复制
In [34]: %timeit df["A"] = df[0]
The slowest run took 5.75 times longer than the fastest. This could mean that an intermediate result is being cached.
1000 loops, best of 3: 661 µs per loop

使用.map()方法:

代码语言:javascript
运行
复制
In [35]: map_df = pd.Series(np.random.randint(0, 10**6, 100000))

In [36]: %timeit df["A"] = df[0].map(map_df)
10 loops, best of 3: 19.8 ms per loop
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40057064

复制
相关文章

相似问题

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