Панды: временная метка для даты и времени

#python #datetime #pandas

#python #дата и время #pandas

Вопрос:

У меня есть фрейм данных, и столбец с датами выглядит так

  date
 1476329529    
 1476329530    
 1476329803 
 1476329805 
 1476329805  
 1476329805 
 

Я использую это df['date'] = pd.to_datetime(df.date, format='%Y-%m-%d %H:%M:%S')
для преобразования, но получаю странный результат

  date 
 1970-01-01 00:00:01.476329529   
 1970-01-01 00:00:01.476329530   
 1970-01-01 00:00:01.476329803  
 1970-01-01 00:00:01.476329805    
 1970-01-01 00:00:01.476329805   
 1970-01-01 00:00:01.476329805   
 

Может быть, я сделал что-то не так

Ответ №1:

Это выглядит как временные метки эпохи, которые являются количеством секунд с 1 января 1970 года :

 In [71]:
pd.to_datetime(df['date'], unit='s')
​
Out[71]:
0   2016-10-13 03:32:09
1   2016-10-13 03:32:10
2   2016-10-13 03:36:43
3   2016-10-13 03:36:45
4   2016-10-13 03:36:45
5   2016-10-13 03:36:45
Name: date, dtype: datetime64[ns]
 

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

1. Привет, для меня это все еще по умолчанию 1970. В чем проблема?

2. проверьте свои единицы измерения. pd теперь по умолчанию равен наносекундам, если вы не указали единицы измерения

Ответ №2:

Возможно, что-то вроде этого:

 import datetime
date = datetime.datetime.fromtimestamp(1476329529)
date
# gives
# datetime.datetime(2016, 10, 13, 5, 32, 9)

str(date) # '2016-10-13 05:32:09'