栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么熊猫在这里应用lambda比循环慢?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么熊猫在这里应用lambda比循环慢?

apply
在后台使用循环,因此,如果需要更好的性能,最好的和最快的方法是最好的选择。

没有循环,只有链2条件向量化解决方案:

m1 = all_actions['Lower'] <= all_actions['Mid']m2 = all_actions['Mid'] <= all_actions['Upper']qualified_actions = m1 & m2

感谢Jon Clements提供的另一种解决方案:

all_actions.Mid.between(all_actions.Lower, all_actions.Upper)

时间

np.random.seed(2017)N = 45000all_actions=pd.Dataframe(np.random.randint(50, size=(N,3)),columns=['Lower','Mid','Upper'])#print (all_actions)

In [85]: %%timeit    ...: qualified_actions = []    ...: for row in all_actions.index:    ...:     if all_actions.ix[row,'Lower'] <= all_actions.ix[row, 'Mid'] <= all_actions.ix[row,'Upper']:    ...:         qualified_actions.append(True)    ...:     else:    ...:         qualified_actions.append(False)    ...:     ...: __main__:259: DeprecationWarning: .ix is deprecated. Please use.loc for label based indexing or.iloc for positional indexingSee the documentation here:http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated1 loop, best of 3: 579 ms per loopIn [86]: %%timeit    ...: (all_actions.apply(lambda row: row['Lower'] <= row['Mid'] <= row['Upper'], axis=1))    ...: 1 loop, best of 3: 1.17 s per loopIn [87]: %%timeit    ...: ((all_actions['Lower'] <= all_actions['Mid']) & (all_actions['Mid'] <= all_actions['Upper']))    ...: 1000 loops, best of 3: 509 µs per loopIn [90]: %%timeit    ...: (all_actions.Mid.between(all_actions.Lower, all_actions.Upper))    ...: 1000 loops, best of 3: 520 µs per loop


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626563.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号