Python: извлечение даты и времени в год, месяц и день с плавающей точкой - PullRequest
3 голосов
/ 29 мая 2019

Мои данные имеют индекс datetime, подобный этому 2016-11-05 23:40:00.
Я хочу выделить элементы datetime в три новых столбца года, месяца и дня.Я использую следующее

import datetime as dt
df['year'] = df.index.year
df['month'] = df.index.month
df['day'] = df.index.day

Но результаты находятся в свободном обращении

year    month   day
2016.0  11.0    5.0

Я хочу

year    month   day
2016    11      5

Помощь приветствуется.

Ответы [ 4 ]

4 голосов
/ 29 мая 2019

Просто используйте astype:

import datetime as dt
df['year'] = df.index.year.astype(int)
df['month'] = df.index.month.astype(int)
df['day'] = df.index.day.astype(int)

Если есть значения Nan, используйте параметр ошибок:

df['year'] = df.index.year.astype(int, errors='ignore')

Это вернет nans для столбцов с нулевым индексом

3 голосов
/ 29 мая 2019

Я думаю, что причина для чисел с плавающей точкой - отсутствующие значения, поэтому, если возможно использование панд 0.24+, используйте Nullable Integer Data Type:

df['year'] = df.index.year.astype('Int64')
df['month'] = df.index.month.astype('Int64')
df['day'] = df.index.day.astype('Int64')
3 голосов
/ 29 мая 2019

преобразовать его в int

import datetime as dt
df['year'] = int(df.index.year)
df['month'] = int(df.index.month)
df['day'] = int(df.index.day)
0 голосов
/ 29 мая 2019

Или, если у вас много столбцов, проще всего может быть код для построения фрейма данных:

df = df.astype(int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...