相关疑难解决方法(0)

为什么DataFrame.loc [[1]]比df.ix [[1]]慢1,800倍,比df.loc [1]慢3,500?

亲自尝试一下:

import pandas as pd
s=pd.Series(xrange(5000000))
%timeit s.loc[[0]] # You need pandas 0.15.1 or newer for it to be that slow
1 loops, best of 3: 445 ms per loop
Run Code Online (Sandbox Code Playgroud)

更新:这是大熊猫的合法错误,可能在2014年8月左右的0.15.1中引入.解决方法:在使用旧版本的pandas时等待新版本; 得到一个前沿的开发.来自github的版本; 在您的发布中手动执行单行修改pandas; 暂时使用.ix而不是.loc.

我有480万行的数据帧,以及选择使用的单个行.iloc[[ id ]](具有单个元素的列表)需要489毫秒,几乎一半的第二,慢1,800x倍的相同.ix[[ id ]],并慢于3,500x倍 .iloc[id](使ID作为一个值,而不是一个列表).公平地说,.loc[list]无论列表的长度如何都需要大约相同的时间,但我不想花费489毫秒,特别是当它.ix快一千倍时,并产生相同的结果.我的理解.ix应该是慢一点,不是吗?

我正在使用熊猫0.15.1.关于索引和选择数据的优秀教程表明,它.ix在某种程度上更为通用,并且可能比.loc和更慢.iloc.具体来说,它说

但是,当轴基于整数时,仅支持基于标签的访问而非位置访问.因此,在这种情况下,通常最好是明确的并使用.iloc或.loc.

这是一个带有基准的iPython会话:

    print 'The dataframe has …
Run Code Online (Sandbox Code Playgroud)

python performance pandas

12
推荐指数
2
解决办法
3079
查看次数

标签 统计

pandas ×1

performance ×1

python ×1