我正在尝试按下面的数量计算大于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()
我的理解是我想要数,但我应该使用和
答案 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