#python #pandas
Вопрос:
У меня есть фрейм данных DF
с 2 столбцами дат (тип данных объекта) в приведенном ниже формате:
date_column1 date_column2 2021-08-14 2021-09-19 2021-10-11 2021-11-02 2019-09-15 2021-10-25 ... ...
и я хочу вставить новую колонку, основанную на приведенном ниже:
DF['date_new'] = DF['date_column2'] (DF['date_column2']-DF['date_column1'])
Код работает, но я получаю следующее предупреждение
C:ProgramDataAnaconda3libsite-packagespandascorearraysdatetimelike.py:1190: PerformanceWarning: Adding/subtracting object-dtype array to TimedeltaArray not vectorized
Как я должен адаптировать свой код, чтобы исправить это предупреждение?
Ответ №1:
Смоделированная с помощью ваших выборочных данных ситуация возникает, когда вы date_column1
используете строковый тип, а date_column2
тип даты-времени. Другие комбинации дают ошибки другого рода. Когда оба они относятся к типу datetime, ошибки нет.
Вы пройдете через предупреждение date_column1
, также преобразовав его в тип даты и времени следующим образом:
DF['date_column1'] = pd.to_datetime(DF['date_column1']) # or to play safe, also convert `date_column2` DF['date_column2'] = pd.to_datetime(DF['date_column2'])
После этого вы получите успешный результат следующим образом без предупреждения:
0 2021-10-25 1 2021-11-24 2 2023-12-05 dtype: datetime64[ns]