通过切换大熊猫来更改系列中行的最快方法?

时间:2015-03-04 13:28:42

标签: python numpy pandas

我在pandas中有一个大型系列数据结构,我需要使用切片编辑某些值。我从以下代码开始:

import numpy as np
import pandas as pd

vec = np.random.randn(1e7)
sr  = pd.Series(vec)
idx = (np.random.rand(10000)*1000).astype(int)

使用idx替换vec中的元素要快得多

timeit vec[idx] = 1.2
10000 loops, best of 3: 32.5 µs per loop

比熊猫结构

timeit sr[idx] = 1.2
1 loops, best of 3: 391 µs per loop

timeit sr.iloc[idx] = 1.2
1000 loops, best of 3: 201 µs per loop

对于这个特定的操作,有没有办法让pandas和numpy获得相同的性能?

1 个答案:

答案 0 :(得分:1)

sr.values[idx] = 1.2的效果与vec[idx] = 1.2相当:

In [101]: %timeit vec[idx] = 1.2
10000 loops, best of 3: 25.8 µs per loop

In [102]: %timeit sr.values[idx] = 1.2
10000 loops, best of 3: 27.3 µs per loop