数据帧滚动大于0计数

时间:2018-04-27 07:13:23

标签: python dataframe

我正在尝试按下面的数量计算大于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 :(得分:0)

您似乎假设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