#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) в целое число