почему в пандах значение катания сохраняет значение null? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть нижеприведенная функция для вычисления скользящего среднего, но это каким-то образом сохраняет значение как нулевое, если col равно null, знаете ли вы почему?

def func_calculate_moving_average_3_6(df,cols):
    for col in cols:
        new_name_ma3 = 'ft_ma3_' + col
        df[new_name_ma3] = df[col].shift(1).rolling(12,min_periods=1).mean()
    return df

пример:

df 


 value ft_ma3_value ft_ma6_value
    ...
    80  75.41666667
    80  76.25
    80  77.08333333
    80  77.91666667
    80  78.75
    85  79.58333333
    85  80.41666667
    85  80.83333333
    85  81.25
    85  81.66666667
    90  82.08333333
    95  82.91666667
    NaN NaN 
    95  84.16666667

1 Ответ

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

numpy.nanmean должен помочь вам, хотя и не самым эффективным способом.

In [1]: df = pd.DataFrame({'A': [np.nan, np.nan, np.nan, 5, np.nan, np.nan]})

In [2]: df.rolling(3).apply(np.nanmean)
Out[2]: 
    A
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN

In [3]: df.rolling(3).mean()
Out[3]: 
    A
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN

In [4]: df.rolling(3, min_periods=1).apply(np.nanmean)
Out[4]: 
     A
0  NaN
1  NaN
2  NaN
3  5.0
4  5.0
5  5.0

In [5]: df.rolling(3, min_periods=1).mean()
Out[5]: 
     A
0  NaN
1  NaN
2  NaN
3  5.0
4  5.0
5  5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...