Преобразование даты и времени.дата или строка в метку времени в python

#python #pandas #datetime #timestamp

#python #pandas #datetime #метка времени

Вопрос:

Я знаю, что этот вопрос был опубликован несколько раз раньше, но все же у меня мало сомнений. У меня есть datetime.date (например mydate = date(2014,5,1) ), и я преобразовал это в строку, а затем сохранил в БД в виде столбца (dtype:object) в таблице. Теперь я хотел изменить хранение дат с текста на метку времени в БД. Я попробовал это,

Пример. Моя таблица tab1 . Я прочитал это как dataframe df в python.

 # datetime to timestamp
df['X'] = pd.to_datetime(mydate)
  

Когда я проверяю dtype в редакторе python df.info() , dtype X равен datetime64[ns], но когда я сохраняю это в DB в MySQL и снова считываю как dataframe в python, dtype изменяется как object . У меня есть тип данных как datetime в MySQL, но мне это нужно как тип данных метки времени в MySQL. Есть ли какой-нибудь способ сделать это? Кроме того, мне нужна только дата Timestamp('2014-5-01 00:00:00') и время исключения.

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

1. Имеет ли ваш столбец в MySQL тип Date?

2. В MySQL это datetime

Ответ №1:

Проблема в том, что когда вы считываете сериализованное значение из MySQL, соединитель python MySQL не преобразует его. вы должны преобразовать его в значение DateTime после считывания данных с курсора, снова вызвав свою функцию для извлеченных данных:

 df['X'] = pd.to_datetime(df['col'])
  

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

1. Хорошо, но я хочу иметь тип данных в качестве метки времени в MySQL вместо datetime. (отображение только даты)

2. Поэтому выберите тип метки ВРЕМЕНИ в MySQL в качестве типа столбца…

3. Есть идеи, как я могу это сделать с помощью python?

4. Вы проверили df[‘datetime’] = df[‘datetime’].apply(лямбда x: pd.Timestamp(x))?

5. Да, я только что пробовал использовать pd. Временная метка, но все же тип данных в MySQL — datetime 🙁

Ответ №2:

Как и было предложено, я изменил тип столбца напрямую, используя dtype аргумент в to_sql() функции при вставке в базу данных. Итак, теперь у меня могут быть типы данных, как TIMESTAMP, DATETIME и DATE в MySQL.

Ответ №3:

для меня это работает:

 df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')
df['timestamp'] = df['Date'].apply(lambda x:  x.timestamp())