Предполагая, что вы хотите только максимальное количество растяжений между двумя нулевыми значениями, вы можете использовать Series.isnull()
, чтобы найти индексы нулевых значений, и list comprehension
, чтобы найти разницу:
indexes = df[df.X.isnull()].index
max([(indexes[i+1] - indexes[i]-1) for i in range(len(indexes)-1)])
>> 4
Если вытакже хотите, чтобы отметки времени:
indexes = df[df.X.isnull()].index
max_nulls = max([((indexes[i+1] - indexes[i]-1), indexes[i], indexes[i+1]) for i in range(len(indexes)-1)], key = lambda x: x[0])
max_nulls
>>(4, 9, 15)
df.loc[max_nulls[1]:max_nulls[2]]
Datetime X
9 02-01-2018 00:00 NaN
10 02-01-2018 00:05 2.0
11 02-01-2018 00:10 2.0
12 02-01-2018 00:15 2.0
13 02-01-2018 00:20 2.0
14 02-01-2018 00:25 NaN
Если вы просто хотите, чтобы отметки времени были с максимальным растяжением ненулевых значений между ними, используйте:
df.loc[[max_nulls[1], max_nulls[2]]]
Datetime X
9 02-01-2018 00:00 NaN
14 02-01-2018 00:25 NaN
или
df.loc[[max_nulls[1]+1, max_nulls[2]-1]]
Datetime X
10 02-01-2018 00:05 2.0
13 02-01-2018 00:20 2.0