#python #pandas #dataframe #datetime
#python #pandas #фрейм данных #datetime
Вопрос:
У меня есть переменная datetime date_var=datetime(2020,09,11,0,0,0 )
, и я пытаюсь заполнить столбец фрейма данных для каждой строки этим значением. Итак, я сделал что-то вроде df['Time']=date_var
сначала это показывает тип данных поля ‘Time’ как datetime64 [ns], а не datetime, и это заполняет поле Time значением 2020-09-11
вместо 2020-09-11 00:00:00
. Я делаю что-то неправильно?
Спасибо
Ответ №1:
Вы не сделали ничего плохого. Тот факт, что он печатается как дата без времени, является просто соглашением в Pandas для упрощения вывода. Вы можете использовать df['Time'].dt.strftime('%F %T')
, если хотите, чтобы столбец также печатался с временной частью.
Хранить datetimes как тип Pandas ( datetime64[ns]
) лучше, чем хранить их как тип Python, потому что им более эффективно манипулировать (например, добавлять смещения ко всем из них).
Комментарии:
1. Но мне нужно иметь его как тип datetime, а не datetime64 [ns] , как это можно сделать?
2. @Invictus: используйте
df['Time'].to_pydatetime()
для преобразования последовательности дат Pandas datetimes в простые даты Python datetimes.
Ответ №2:
Попробуйте этот код
import datetime
import pandas as pd
date_var = datetime.datetime(2020,9,11,0,0,0)
df['Time'] = date_var.strftime('%Y-%m-%d %H:%M:%S')
df['Time'] = pd.to_datetime(df['Time'])