我在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获得相同的性能?
答案 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