【问题标题】:How to find the row index of Pandas dataframe at which a column CumSum equals X? [duplicate]如何找到列 CumSum 等于 X 的 Pandas 数据帧的行索引? [复制]
【发布时间】:2020-11-03 00:55:57
【问题描述】:

考虑以下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 的累积总和——从最后一行算起——等于 0。

In this post,如果列包含负值,解决方案将不起作用,这是我的情况。

我想是从上到下移动

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

可行,但需要颠倒此过程。

您对如何执行此操作有任何指示吗?

【问题讨论】:

    标签: python pandas dataframe cumsum


    【解决方案1】:

    您可以使用[::-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
    

    【讨论】:

      【解决方案2】:

      [::-1]可以反转任何系列或列表:

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

      【讨论】:

      • 虽然答案相同,但答案本身是正确的。致投反对票者:如果你投反对票,请留下理由,谢谢~
      • 赞成正确的结果〜
      猜你喜欢
      • 1970-01-01
      • 2023-02-21
      • 2020-07-10
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 2015-09-08
      相关资源
      最近更新 更多