Как получить отношение элемента к предыдущему в Series?

Есть ряд элементов:

s = pd.Series([1, 2, 10, 20])

Как получить отношение элемента к предыдущему?

То есть, что-то такое S(i)/S(i-1), и ожидаемый результат: Out: (None,2,5,2).


Ответы (2 шт):

Автор решения: MaxU

Воспользуйтесь методом Series.pct_change():

пример:

исходный ряд данных (Series):

In [34]: s = pd.Series([10, 12, 10, 15, 20])

In [35]: s
Out[35]:
0    10
1    12
2    10
3    15
4    20
dtype: int64

отношение элемента к предыдущему:

In [36]: s.pct_change()
Out[36]:
0         NaN
1    0.200000
2   -0.166667
3    0.500000
4    0.333333
dtype: float64

отношение элемента к следующему:

In [37]: s.pct_change(-1)
Out[37]:
0   -0.166667
1    0.200000
2   -0.333333
3   -0.250000
4         NaN
dtype: float64
→ Ссылка
Автор решения: Артем Нечаев
s = pd.Series([1, 2, 10, 20])

s/s.shift()
→ Ссылка