查找元素符号从 0 变为 1 的索引

原文标题find index where element change sign from 0 to 1

我有一个如下所示的 DataFrame,我想在其中找到元素从 0 到 1 的索引。

下面的代码获得了我想要的所有实例,但它也包括符号从 -1 变为 0 的情况,这是我不想要的。

import numpy as np

df=pd.DataFrame([0,1,1,1,0,1,0,-1,0])
df[np.sign(df[0]).diff(periods=1).eq(1)]

输出:

    0
1   1
5   1
8   0

原文链接:https://stackoverflow.com//questions/71476057/find-index-where-element-change-sign-from-0-to-1

回复

我来回复
  • richardec的头像
    richardec 评论

    只需添加另一个条件:

    filtered = df[np.sign(df[0]).diff(1).eq(1) & np.sign(df[0]).eq(1)]
    

    输出:

    >>> filtered
       0
    1  1
    5  1
    
    2年前 0条评论
  • enke的头像
    enke 评论

    您可以使用diffshift(确保前一个元素为 0):

    out = df[df.diff().eq(1) & df.shift().eq(0)].dropna()
    

    话又说回来,我们甚至不需要diff,因为差值总是1,所以只需shift就足够了:

    out = df[df[0].eq(1) & df[0].shift().eq(0)]
    

    输出:

         0
    1  1.0
    5  1.0
    
    2年前 0条评论