вставка диапазона в несколько критериев фильтра - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь отфильтровать дремоту, вставив логические операторы по продолжительности минут сна и часа сна.Применение минимального значения продолжительности работает, однако, когда я вставляю диапазон часов бездействия, код не выполняется. Столбец «startleep» является извлечением часа из столбца даты и времени.Где я ошибаюсь с моим кодом ниже?

 date_delta efficiency  has_sleep_data  datauuid    end_time    start_time  time_offset update_time create_time date    weekday day month   startsleep  wakeup  sleep_duration  duration_mins   powernaps   weekend
    0   0   92.663040   1.0 03f12ce0-9ade-5c74-9d57-686fd3966f2a    2018-03-08 05:30:00-04:00   2018-03-07 23:23:00-04:00   UTC-0400    2018-03-08 09:39:58.387000-04:00    2018-03-08 05:32:02.181000-04:00    2018-03-07  2   <built-in method date of datetime.datetime obj...   3   23  5   06:07:00    367.0   False   False
    1   1   87.788020   1.0 0419de25-ff8a-e425-0864-7e83b7f5d991    2018-02-25 09:28:00-04:00   2018-02-25 02:15:00-04:00   UTC-0400    2018-02-25 09:30:16.332000-04:00    2018-02-25 09:30:16.332000-04:00    2018-02-25  6   <built-in method date of datetime.datetime obj...   2   2   9   07:13:00    433.0   False   True
    2   2   90.026955   1.0 048b90e0-1e31-7875-337c-e9d8c24bea59    2018-06-02 06:49:00-03:00   2018-06-02 00:37:00-03:00   UTC-0300    2018-06-02 06:49:32.094000-03:00    2018-06-02 06:49:32.094000-03:00    2018-06-02  5   <built-in method date of datetime.datetime obj...   6   0   6   06:12:00    372.0   False   True

Ошибка при добавлении второго логического оператора ниже:

TypeError: объект 'Series' не вызывается

df_sleep['powernaps']=[(df_sleep.duration_mins<120) & (df_sleep.startsleep(10,23))]

df_sleep['powernaps']=[(df_sleep.duration_mins<120) & (df_sleep.startsleep(range(10,23)))]

Я ожидаю, что перерывы в энергопотреблении будут возвращать только те столбцы, для которых критерий длительности равен < 120 mins, а время перехода в спящий режим - с 10 до 23 часов

1 Ответ

0 голосов
/ 30 декабря 2018

Ошибка появляется, когда вы пытаетесь нарезать pd.Series, используя круглые скобки.Вместо этого вы должны использовать скобки.Я предлагаю вам прочитать Индексирование и выбор данных , чтобы получить хорошее представление о том, как индексировать в пандах,

Также вы не можете нарезать с помощью range, вместо этого вам придется фильтровать, используянижняя и верхняя границы как:

df_sleep['powernaps']=(df_sleep.duration_mins < 120) & 
                       (df_sleep.startsleep > 10) & 
                       (df_sleep.startsleep < 23)
...