Найти в Дзене
Властелин машин

Капризы условных конструкций в Pandas и NumPy

Рассмотрим, как избежать ключевую проблему, которая может возникнуть при использовании излюбленной условной конструкции - where пакета NumPy со значениями из DataFrame.

В большом количестве случаев ее применение вызывает ожидаемый результат, однако зачастую происходит путаница типов. Для демонстрации построим датафрейм:

Попытка заменить в столбце date_time значения даты приведет к следующему результату:

-2

При этом типы данных отдельных элементов в столбце и у нового значения совпадают, а тип данных всего столбца - datetime64 модуля NumPy:

-3

Для решения проблемы можно преобразовать значение новой даты в datetime64:

-4

Либо можно использовать аналогичные where методы библиотеки Pandas. В частности, существуют два метода датафрейма, позволяющие добиться цели - where и mask. where применяет заменяемое значение из второго аргумента, когда условие ложно, а mask - когда истинно.

-5

-6