Присвоение переменной datetime столбцу фрейма данных pandas

#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'])