Python 熊猫在范围内找到idxmax()

Python 熊猫在范围内找到idxmax(),python,pandas,Python,Pandas,我有这个时间序列: Current 2018-09-01 00:00 -0.01 2018-09-01 00:01 -0.03 2018-09-01 00:02 -0.01 2018-09-01 00:03 0.03 2018-09-01 00:04 -0.02 2018-09-01 00:05 -0.04 2018-09-01 00:06 0.05 我试图找到当前值的第一个实例,

我有这个时间序列:

                    Current
2018-09-01 00:00      -0.01
2018-09-01 00:01      -0.03
2018-09-01 00:02      -0.01
2018-09-01 00:03       0.03
2018-09-01 00:04      -0.02
2018-09-01 00:05      -0.04
2018-09-01 00:06       0.05
我试图找到当前值的第一个实例,该值大于0.01。如果我使用

findValue = (df['Current'] > 0.01).idxmax()
我将返回:

2018-09-01 00:03 0.03

但是,我想忽略前5行,因此返回应该是

 2018-09-01 00:06       0.05
我已尝试使用shift():

但这似乎不正确…

您可以通过索引来使用seelct all columns,而无需先
5

N = 5
findValue = (df['Current'].iloc[N:] > 0.01).idxmax()
print (findValue)
2018-09-01 00:06
另一个想法是通过
np.arange
和数据帧的长度创建另一个布尔掩码,并通过
&
链接:

m1 = df['Current'] > 0.01
m2 = np.arange(len(df)) >= 5
findValue = (m1 & m2).idxmax()
print (findValue)
2018-09-01 00:06

如果需要在
DatetimeIndex
中按值选择:

findValue = (df['Current'].loc['2018-09-01 00:05':] > 0.01).idxmax()
print (findValue)
2018-09-01 00:06:00

m1 = df['Current'] > 0.01
m2 = df.index >= '2018-09-01 00:05'
findValue = (m1 & m2).idxmax()
print (findValue)
2018-09-01 00:06:00
但是:

idxmax
首先返回
False
值,如果不匹配任何值:

m1 = df['Current'] > 5.01
m2 = np.arange(len(df)) >= 5
findValue = (m1 & m2).idxmax()

print (findValue)
2018-09-01 00:00:00
可能的解决方案是使用
next
iter

m1 = df['Current'] > 5.01
m2 = np.arange(len(df)) >= 5
findValue = next(iter(df.index[m1 & m2]), 'no exist')

print (findValue)
no exist

如果性能很重要,请检查此nice@jpp Q/A-。

谢谢。对于第一个解决方案,我如何只获取第5行的索引(idxmax范围的起始点:
2018-09-01 00:04
?)@wazzahery-使用
df.index[4]
,因为python从
0
m1 = df['Current'] > 5.01
m2 = np.arange(len(df)) >= 5
findValue = next(iter(df.index[m1 & m2]), 'no exist')

print (findValue)
no exist