猿问

Pandas:如何找到过零的值?

这是我的数据框


      Date     Time      Value

16.02.2020 21:00:00    0.05012

16.02.2020 22:00:00    0.04285

16.02.2020 23:00:00    0.03559

17.02.2020  0:00:00    0.02833

17.02.2020  1:00:00    0.02107

17.02.2020  2:00:00    0.01380

17.02.2020  3:00:00    0.00654

17.02.2020  4:00:00   -0.00073

17.02.2020  5:00:00   -0.00799

17.02.2020  6:00:00   -0.01526

17.02.2020  7:00:00   -0.02252

17.02.2020  8:00:00   -0.02978

17.02.2020  9:00:00   -0.03704

17.02.2020 10:00:00   -0.04430

17.02.2020 11:00:00   -0.05156

如何找到值过零的行?我可以通过迭代来做到这一点:


如果当前值 > 0 且先前值 < 0,

当前值 < 0 且先前值 > 0,


所以它是过零的。

但我的数据框非常大。如何在不迭代的情况下做到这一点?


SMILET
浏览 124回答 2
2回答

梦里花落0921

IIUC,你可以尝试np.sign+series.diffout&nbsp;=&nbsp;df[np.sign(df['Value']).diff().fillna(0).ne(0)].copy()

慕桂英4014372

我们可以创建蒙版来制作这个过滤器shiftmask1 = (df['Value'] < 0)mask2 = (df['Value'] > 0).shift()mask3 = (df['Value'] > 0)mask4 = (df['Value'] < 0).shift()df.loc[(mask1 & mask2) | (mask3 & mask4)]#output:&nbsp; &nbsp; Date&nbsp; &nbsp; &nbsp; &nbsp; Time&nbsp; &nbsp; Value7&nbsp; &nbsp;17.02.2020&nbsp; 4:00:00 -0.00073
随时随地看视频慕课网APP

相关分类

Python
我要回答