Метод скручивания панд с данными, подлежащими смещению - PullRequest
0 голосов
/ 31 октября 2018
df = pd.DataFrame({'Number': [x for x in range(10)]})
df["rolling"] = df["Number"].rolling(3).mean()
print(df)

С приведенным выше кодом, он выведет

   Number  rolling
0       0      NaN
1       1      NaN
2       2      1.0
3       3      2.0
4       4      3.0
5       5      4.0
6       6      5.0
7       7      6.0
8       8      7.0
9       9      8.0

Таким образом, метод прокрутки применяется к данным, включая текущие данные индекса, например, первое скользящее среднее рассчитывается в 3-й позиции, я уверен, что есть преимущество, вы всегда используете самую последнюю информацию.

Могу ли я на самом деле применить метод прокрутки к данным до текущего индекса, но не включая его? например, первое скользящее среднее теперь должно быть вычислено в 4-й позиции, используя данные [0: 3]?

   Number  rolling
0       0      NaN
1       1      NaN
2       2      NaN
3       3      1.0
4       4      2.0
5       5      3.0
6       6      4.0
7       7      5.0
8       8      6.0
9       9      7.0

Я знаю, что смогу достичь того же результата, если выполнить эту прокрутку и сдвинуть результат на 1, но я хочу знать, как я могу ввести «правильные» данные, если я не хочу, чтобы метод прокрутки использовал последнюю данные индекса.

1 Ответ

0 голосов
/ 31 октября 2018

Как отмечал ранее Виктор, вы можете совмещать смену и прокатку оператора.

df['rolling2'] = df['Number'].shift(1).rolling(3).mean()

   Number  rolling  rolling+shift
0       0      NaN            NaN
1       1      NaN            NaN
2       2      1.0            NaN
3       3      2.0            1.0
4       4      3.0            2.0
5       5      4.0            3.0
6       6      5.0            4.0
7       7      6.0            5.0
8       8      7.0            6.0
9       9      8.0            7.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...