为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas:如何找到过零的值?

Pandas:如何找到过零的值?

SMILET 2023-07-11 14:27:13
这是我的数据框      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 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

IIUC,你可以尝试np.sign+series.diff

out = df[np.sign(df['Value']).diff().fillna(0).ne(0)].copy()


查看完整回答
反对 回复 2023-07-11
?
慕桂英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


查看完整回答
反对 回复 2023-07-11
  • 2 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信