Определение максимального растяжения значений между двумя нулевыми значениями в столбце данных - PullRequest
0 голосов
/ 07 мая 2019

У меня есть датафрейм с датой и столбцом.Я должен найти максимальный интервал значений между двумя нулевыми значениями. В приведенном ниже примере максимальный интервал значений между двумя нулевыми значениями равен 4, т. Е. От отметки времени '02 -01-2018 00:05 до 02-01-2018 00:20 '

Ниже приведены мои образцы данных:

Datetime            X
01-01-2018 00:00    1
01-01-2018 00:05    Nan
01-01-2018 00:10    2
01-01-2018 00:15    3
01-01-2018 00:20    2
01-01-2018 00:25    Nan
01-01-2018 00:30    Nan
01-01-2018 00:35    Nan
01-01-2018 00:40    4
02-01-2018 00:00    Nan
02-01-2018 00:05    2
02-01-2018 00:10    2
02-01-2018 00:15    2
02-01-2018 00:20    2
02-01-2018 00:25    Nan
02-01-2018 00:30    Nan
02-01-2018 00:35    3
02-01-2018 00:40    Nan

1 Ответ

1 голос
/ 07 мая 2019

Предполагая, что вы хотите только максимальное количество растяжений между двумя нулевыми значениями, вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...