我有一个数据框, flag = np.sign(value)
absolute
我有一个变量,截止值为1(它总是+ ve,它的模数)
我怎样才能最好选择股票代码abs(cumsum(flag))<= 1
即预期输出为[A1,B1,C3]
i.e我想一直浏览下去,直到找到LAST 1或-1
我尝试了一个循环:
ticker value flag cumsum(flag)
A1 -1.5 -1 -1
B1 1.4 1 0
C3 -2.4 -1 -1
D4 -1.8 -1 -2
E6 -1.6 -1 -3
但这只会给我A1和C3,而错过B2
谢谢
每个注释的注释: @Vaishali-问题不是重复的。我想要股票行情清单中的所有值,直到我们到达总和清单中的最后-1。
上面,我们在C3到达最后的abs(val)= 1,所以我的列表是C3,B1,A1。
您的解决方案中,您指向我指向的线程仅提供A1和C3。
您会注意到A1并非最终列表中的最后-1,因此仅A1不能满足要求。我们注意到C3是最后+/- 1的位置,因此我们需要的列表是A1,B1,C3
谢谢!
答案 0 :(得分:1)
您可以根据自己的条件找到最后一个有效索引并创建一个切片。
idx = df[df['cumsum(flag)'].abs() <= 1].last_valid_index()
df.loc[:idx, :]
ticker value flag cumsum(flag)
0 A1 -1.5 -1 -1
1 B1 1.4 1 0
2 C3 -2.4 -1 -1