Панды преобразуют целое число в дату

#date #pandas

#Дата #pandas

Вопрос:

Итак, у меня есть объект DataFrame с именем ‘df’, и я пытаюсь преобразовать ‘timestamp’ в фактическую читаемую дату.

      timestamp
0   1465893683657       
1   1457783741932   
2   1459730006393   
3   1459744745346   
4   1459744756375   
  

Я пытался

 df['timestamp'] = pd.to_datetime(df['timestamp'],unit='s')
  

но это дает

      timestamp
0   1970-01-01 00:24:25.893683657   
1   1970-01-01 00:24:17.783741932   
2   1970-01-01 00:24:19.730006393   
3   1970-01-01 00:24:19.744745346   
4   1970-01-01 00:24:19.744756375   
  

что явно неправильно, поскольку я знаю, что дата должна быть либо в этом, либо в прошлом году.

Что я делаю не так?

Ответ №1:

Решение с единицей ms :

 print (pd.to_datetime(df.timestamp, unit='ms'))
0   2016-06-14 08:41:23.657
1   2016-03-12 11:55:41.932
2   2016-04-04 00:33:26.393
3   2016-04-04 04:39:05.346
4   2016-04-04 04:39:16.375
Name: timestamp, dtype: datetime64[ns]
  

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

1. ни один из ответов не работает для меня. Я получаю те же результаты, что и раньше. Еще немного информации: введите(df[‘timestamp’]) —> выдает —> pandas.core.series. Серии

2. Возможно, есть какие-то неверные данные — используйте (pd.to_datetime(df.timestamp, unit='ms', errors='coerce')) для их преобразования в NaN . также вы можете проверить эти строки с помощью print df[pd.to_datetime(df.timestamp, unit='ms', errors='coerce').isnull()]

3. также, если я сделаю df.timestamp = df.timestamp.to_datetime() Я получаю ошибку AttributeError: у объекта ‘Series’ нет атрибута ‘to_datetime’

4. df[pd.to_datetime(df.timestamp, unit=’ms’, errors=’принудительно’).isnull()] возвращает пустой фрейм данных

5. print (pd.to_datetime(df.timestamp, unit =’ms’, errors = ‘принуждение’)) также выдает неправильные ответы, как и раньше

Ответ №2:

Вы можете уменьшить значащие цифры или лучше использовать единицу @jezrael («мс»).

 In [133]: pd.to_datetime(df.timestamp // 10**3, unit='s')
Out[133]:
0   2016-06-14 08:41:23
1   2016-03-12 11:55:41
2   2016-04-04 00:33:26
3   2016-04-04 04:39:05
4   2016-04-04 04:39:16
Name: timestamp, dtype: datetime64[ns]