Панды: катящиеся с периодическими границами - PullRequest
0 голосов
/ 05 апреля 2019

Можно ли включить значения индекса начала и конца при использовании функции rolling в pandas так, чтобы значения ряда были периодическими?

Например, у меня есть следующее Series экземпляр:

import pandas as pd
timestamps = [1, 2, 3, 4]
quantities = [1, 16, 9, 4]
series = pd.Series(quantities, index=timestamps)

, который, когда я печатаю:

series.rolling(window=3, min_periods=3, center=True).median()

, дает:

1    NaN
2    9.0
3    9.0
4    NaN
dtype: float64

Однако я хотел бы включить любой конецряд в расчете такой, что результат будет:

1    median([4, 1, 16])   4.0
2    median([1, 16, 9])   9.0
3    median([16, 9, 4])   9.0
4    median([9, 4, 1])    4.0
dtype: float64

Спасибо за любую помощь, пытаясь достичь этого!

1 Ответ

0 голосов
/ 05 апреля 2019

Мы можем расширить список первым и последним элементом, а затем вычислить скользящее медиану. После этого мы dropna и присваиваем серию обратно

Не выиграет цену за самый красивый код, но он делает свою работу. Не мог придумать другого пути.

quantities2 = quantities.copy()
quantities2.insert(0, quantities2[-1])
quantities2.insert(len(quantities2), quantities2[0])
print(quantities2)

[4, 1, 16, 9, 4, 4]
series = pd.Series(quantities2)
series = pd.Series(series.rolling(window=3, min_periods=3, center=True).median().dropna(), index=timestamps)

print(series)
1    4.0
2    9.0
3    9.0
4    4.0
dtype: float64

Но опять же, мы должны написать самый чистый код? :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...