Я был удивлен улучшением производительности в 6 раз, которое я получил путем доступа к элементам серии, используя my_series.values[0]
, а не my_series.iat[0]
.
В соответствии с документацией .iat
является рекомендуемым способом быстрого доступа к скалярам. Я что-то пропустил, используя .values
?
import numpy as np
import pandas as pd
n = 1000
dct = {'A': np.random.rand(n)}
df = pd.DataFrame(dct)
s = df['A']
vals = s.values
%timeit -n 10000 val = s.iloc[0]
%timeit -n 10000 val = s.iat[0]
%timeit -n 10000 val = s.values[0]
%timeit -n 10000 vals[0]
**Output**
10000 loops, best of 3: 24.3 µs per loop
10000 loops, best of 3: 13.4 µs per loop
10000 loops, best of 3: 2.06 µs per loop
10000 loops, best of 3: 337 ns per loop