如何从熊猫数据框中选择部分数据

时间:2019-01-12 20:49:33

标签: python pandas

我有一个数据框, 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

谢谢!

1 个答案:

答案 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