Извлечение даты и времени в год, но приводит к значению с плавающей запятой

#python #pandas #datetime

#python #панды #дата и время

Вопрос:

Моя дата-время имеет формат 2009-01-23. Когда я пытаюсь просто извлечь год в новый столбец, я получаю значение с плавающей запятой.

df[‘year’] = df[‘Date’].dt.year Я получаю результат как 2009.0, а dtype — float

Как мне получить только 2009 год

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

1. Привет, пожалуйста, добавьте свой код в блок кода. попробуйте это: df['year'] = int(df['Date'].dt.year)

2. Привет, спасибо! Я попробовал. Но я получаю эту ошибку — TypeError: не удается преобразовать ряд в <class ‘int’>

Ответ №1:

Просто сделайте:

 df['year'] = int(df['Date'].dt.year)
  

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

1. Привет, спасибо! Я попробовал. Но я получаю эту ошибку — TypeError: не удается преобразовать ряд в <class ‘int’>

Ответ №2:

Преобразуйте его в целое число, например:

 df['year'] = df['Date'].dt.year
df['year'] = df['year'].astype(numpy.int64)
  

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

1. Привет, спасибо! Я попробовал. Но я получаю эту ошибку — TypeError: не удается преобразовать ряд в <class ‘int’>

2. @user2830993 это странно … вы уверены, что df['year'] это тип float ?

3. @user2830993 ага! тип float не совпадает с типом float64 . float64 это numpy тип. Используйте df['year'] = df['year'].astype(numpy.int64) вместо этого.

4. Понял! Я попробовал. У меня есть несколько нулевых значений в столбце, и я получаю эту ошибку. Ошибка значения: невозможно преобразовать конечные значения (NA или inf) в целое число