Рассчитайте окно Rolling Geomean в Pandas так же, как оно рассчитывается в EXCEL - PullRequest
0 голосов
/ 26 ноября 2018

В EXCEL, вычисление геомеана размера 2 на Col1, приведет к 6 в строке 1 Geo_2, поскольку геомеан 4 и 9 равен 6. В Pandas или numpy это, кажется, наоборот, с min_period =1, первая строка отражает вычисление только 1 значения, а последующие вычисления используют предыдущий и текущий ряд Col1 для вычисления geomean.Я хочу, чтобы окно расчета было текущей и следующей строкой столбца col1, поэтому первое значение Geo_2 равно 6, а последнее значение должно быть 2.

    DASeries = [4,9,3,3,5,7,8,4,2]
import numpy as np
import pandas as pd
from scipy.stats.mstats import gmean
    DA_df = pd.DataFrame(DASeries)
    geoMA2 = [2,3]
    geo_df = pd.DataFrame([pd.Series(DASeries).rolling(window =elem, min_periods = 1).apply(gmean, raw =True) for elem in geoMA2]).T 
    Final = pd.concat([DA_df,geo_df],axis=1)
    labs = ['Col1','Geo_2','Geo_3']
    Final.columns = labs
    Final

enter image description here

1 Ответ

0 голосов
/ 26 ноября 2018

Использование .iloc[::-1]

pd.Series(DASeries).iloc[::-1].rolling(window =2, min_periods = 1).apply(gmean).iloc[::-1]
0    6.000000
1    5.196152
2    3.000000
3    3.872983
4    5.916080
5    7.483315
6    5.656854
7    2.828427
8    2.000000
dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...