查找元素符号从 0 变为 1 的索引
python 210
原文标题 :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
回复
我来回复-
richardec 评论
只需添加另一个条件:
filtered = df[np.sign(df[0]).diff(1).eq(1) & np.sign(df[0]).eq(1)]
输出:
>>> filtered 0 1 1 5 1
2年前 -
enke 评论
您可以使用
diff
和shift
(确保前一个元素为 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年前