Подтвердить что ты не робот

Выровнять по левому краю объект катания pandas

Используя pandas 0.18.1, я бы хотел взять скользящее среднее для одного столбца. Начиная с версии 0.18.0, это делается с помощью объектов roll(). Значение по умолчанию для этих подвижных объектов должно быть правильно обосновано. Существует логический аргумент, который вы можете передать, center = True, чтобы выровнять объект качения с центральным значением, но, похоже, не существует способа выравнивания по левому краю. Вот пример:

df = pandas.DataFrame({'A': [2,3,6,8,20, 27]})
df
    A
0   2
1   3
2   6
3   8
4  20
5  27

Стандартный метод автоматически выравнивается вправо, поэтому нет значения в первых двух indecies с окном размера три:

 df.rolling(window=3).mean()
           A
0        NaN
1        NaN
2   3.666667
3   5.666667
4  11.333333
5  18.333333

Мы можем выровнять по центру операцию следующим образом:

df.rolling(window=3).mean(center=True)
           A
0        NaN
1   3.666667
2   5.666667
3  11.333333
4  18.333333
5        NaN

Но я ищу следующее:

df.rolling(3).mean()
            A
 0   3.666667
 1   5.666667
 2  11.333333
 3  18.333333
 4        NaN
 5        NaN

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

4b9b3361

Ответ 1

Я думаю, вы можете использовать shift:

a = df.rolling(window=3).mean().shift(-2)
print (a)
           A
0   3.666667
1   5.666667
2  11.333333
3  18.333333
4        NaN
5        NaN