Dataframe Rolling больше 0 отсчетов - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь посчитать количество возвратов больше 0, как указано ниже, однако оно возвращает константу 5, я не уверен, что это за ошибка ниже, и попытался поискать безуспешно, пожалуйста, сообщите мне

df['Countifup'] = (df['SPXreturn'].gt(0)).rolling(window=5).count()

SPXreturn Countifup
-1            0
+1            1
-2            0
+2            2
+5            3

Я попробовал это, и это работает

df['Countifup'] = (df['SPXreturn'].gt(0)).rolling(window=10).sum()

Что я понимаю, так это то, что я хотел подсчитать, но я должен использовать сумму

1 Ответ

0 голосов
/ 27 апреля 2018

Кажется, вы предполагаете, что df['SPXreturn'].gt(0) фильтрует информационный кадр, но на самом деле возвращает логическую маску:

df['SPXreturn'].gt(0)
# 0    False
# 1     True
# 2    False
# 3     True
# 4     True
# Name: SPXreturn, dtype: bool

Вот как бы я подошел к этой проблеме:

df['Countifup'] = df[df['SPXreturn'].gt(0)].rolling(5).count()
df['Countifup'] = (df['Countifup'].fillna(0)
                                  .astype(int))
df
#    SPXreturn  Countifup
# 0         -1        0
# 1          1        1
# 2         -2        0
# 3          2        2
# 4          5        3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...