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