這是我的數(shù)據(jù)框 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如何找到值過零的行?我可以通過迭代來做到這一點:如果當(dāng)前值 > 0 且先前值 < 0,或當(dāng)前值 < 0 且先前值 > 0,所以它是過零的。但我的數(shù)據(jù)框非常大。如何在不迭代的情況下做到這一點?
2 回答

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊
IIUC,你可以嘗試np.sign
+series.diff
out = df[np.sign(df['Value']).diff().fillna(0).ne(0)].copy()

慕桂英4014372
TA貢獻(xiàn)1871條經(jīng)驗 獲得超13個贊
我們可以創(chuàng)建蒙版來制作這個過濾器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
提交
取消