Ошибка типа: не удается преобразовать ряд в для функции даты

#python #jupyter-notebook

#python #jupyter-notebook

Вопрос:

Цель: вычислить дни между обоими днями

 Value          int64
Date           int64
Month          int64
Year           int64
Day            int64
LocationID     int32
CategoryID     int32
  

Не удалось запустить l_date

 def my_function(train):
    train['f_date'] = date(2016, 1, 1)
    train['l_date'] = date(train['Year'], train['Month'], train['Date'])
    train['date_block'] = train['l_date']-train['f_date']
    return train
  

Обновление ** (Дата 1-31 к вашему сведению)

 def my_function(train):
    train['f_date'] = date(2016,1,1)
    train["l_date"] = pd.to_datetime({'year': train['Year'],
                   'month': train['Month'],
                   'day': train['Date']})
    train['date_block'] = train['l_date']-train['f_date']
    return train
  

Новая ошибка
Ошибка типа: неподдерживаемые типы операндов для -: ‘DatetimeIndex’ и ‘datetime.date’

Комментарии:

1. Вы импортируете datetime из datetime в свой скрипт?

2. train['Year'] вернет ряд, не совпадающий с int и для train['Month'] и train['Date']

3. Я уже включил данные из даты импорта datetime

4. как мне исправить эту строку, чтобы возвращать ряд, не являющийся int train[‘l_date’] = date (поезд [‘Год’], поезд [‘Месяц’], поезд [‘Дата’])

Ответ №1:

Вы должны использовать pd.to_datetime. Строка

 train['l_date'] = date(train['Year'], train['Month'], train['Date'])
  

должно быть исправлено как

 train["l_date"] = pd.to_datetime(train[['Year','Month','Day']])
  

Я думаю, что вы также вводите неправильный день с датой.

Проблема в том, что datetime.date требует целых чисел, но df[«colname»] возвращает ряд. pd.to_datetime может использоваться для работы с рядами и фреймами данных.

Комментарии:

1. Ошибка типа: неподдерживаемые типы операндов для -: ‘DatetimeIndex’ и ‘datetime.date’

2. Ошибка произошла в train['date_block'] = train['l_date']-train['f_date'] связано ли это с train['f_date'] = date(2016,1,1)

3. Вы могли бы преобразовать train[‘f_date’] следующим образом: train['date_block'] = train['l_date']-pd.to_datetime(train['f_date']) .

Ответ №2:

 def my_function(train):
    train['f_date'] = datetime(2016, 1, 1)
    train["l_date"] = pd.to_datetime({'year': train['Year'],
                   'month': train['Month'],
                   'day': train['Date']})
    train['date_block'] = train['l_date']-train['f_date']
    return train