如何找到CumSum等于X的Pandas数据帧的行索引?

问题描述

考虑以下DataFrame df

index    A
    0   -1
    1    0
    2    1
    3   -1  # <==== here,df['A'].cumsum() == 0,starting from last row 
    4   -1
    5   -1
    6    1
    7   -1
    8    1
    9    1
    10   1

我试图确定A的累积总和-从最后一行算起的 -等于零。

In this post,如果列包含负值,则该解决方案将无法使用。

我认为从上到下移动

df[df['A'].cumsum() == 0]

可以工作,但是此过程需要逆转。

您对此有任何建议吗?

解决方法

您可以使用[::-1]来获得受尊敬的cumsum。这将返回cumsum = 0的所有结果:

df[df['A'][::-1].cumsum() == 0]

   index    A
0   0      -1
3   3      -1

如果您只想要最后一个,请执行以下操作:

df[df['A'][::-1].cumsum() == 0].iloc[-1]

index    3
A       -1
,

[::-1]可以颠倒任何系列或列表:

df[df['A'][::-1].cumsum()==0]