这是我的数据框 Date Time Value16.02.2020 21:00:00 0.0501216.02.2020 22:00:00 0.0428516.02.2020 23:00:00 0.0355917.02.2020 0:00:00 0.0283317.02.2020 1:00:00 0.0210717.02.2020 2:00:00 0.0138017.02.2020 3:00:00 0.0065417.02.2020 4:00:00 -0.0007317.02.2020 5:00:00 -0.0079917.02.2020 6:00:00 -0.0152617.02.2020 7:00:00 -0.0225217.02.2020 8:00:00 -0.0297817.02.2020 9:00:00 -0.0370417.02.2020 10:00:00 -0.0443017.02.2020 11:00:00 -0.05156如何找到值过零的行?我可以通过迭代来做到这一点:如果当前值 > 0 且先前值 < 0,或当前值 < 0 且先前值 > 0,所以它是过零的。但我的数据框非常大。如何在不迭代的情况下做到这一点?
2 回答
![?](http://img1.sycdn.imooc.com/545863dc00011d2202200220-100-100.jpg)
梦里花落0921
TA贡献1772条经验 获得超6个赞
IIUC,你可以尝试np.sign
+series.diff
out = df[np.sign(df['Value']).diff().fillna(0).ne(0)].copy()
![?](http://img1.sycdn.imooc.com/545868190001d52602200220-100-100.jpg)
慕桂英4014372
TA贡献1871条经验 获得超13个赞
我们可以创建蒙版来制作这个过滤器shift
mask1 = (df['Value'] < 0)
mask2 = (df['Value'] > 0).shift()
mask3 = (df['Value'] > 0)
mask4 = (df['Value'] < 0).shift()
df.loc[(mask1 & mask2) | (mask3 & mask4)]
#output:
Date Time Value
7 17.02.2020 4:00:00 -0.00073
添加回答
举报
0/150
提交
取消