Преобразовать строку в дату и время pandas - PullRequest
0 голосов
/ 24 марта 2020

У меня есть DataFrame, который содержит строки, которые должны быть преобразованы в datetime для сортировки DataFrame. Строки получены из системных журналов.

enter image description here

Строки выглядят так, как показано на рисунке и ниже:

date
Mar 16 03:40:24.411
Mar 16 03:40:25.415
Mar 16 03:40:28.532
Mar 16 03:40:30.539
Mar 14 03:20:30.337
Mar 14 03:20:31.340
Mar 14 03:20:37.415

Я попытался преобразовать его с помощью pandas .to_datetime (), но я получил следующую ошибку:

OutOfBoundsDatetime: временная метка наносекундной границы: 1-03-16 03: 40: 24

Мне могут понадобиться и наносекунды.

Ответы [ 2 ]

1 голос
/ 24 марта 2020

Необходимо указать format строки с этой ссылкой . Нет года, поэтому по умолчанию выводится year:

df['date'] = pd.to_datetime(df['date'], format='%b %d %H:%M:%S.%f')
print (df)
                     date
0 1900-03-16 03:40:24.411
1 1900-03-16 03:40:25.415
2 1900-03-16 03:40:28.532
3 1900-03-16 03:40:30.539
4 1900-03-14 03:20:30.337
5 1900-03-14 03:20:31.340
6 1900-03-14 03:20:37.415

Вы можете добавить год к столбцу и затем проанализировать его следующим образом:

df['date'] = pd.to_datetime('2020 ' + df['date'], format='%Y %b %d %H:%M:%S.%f')
print (df)
                     date
0 2020-03-16 03:40:24.411
1 2020-03-16 03:40:25.415
2 2020-03-16 03:40:28.532
3 2020-03-16 03:40:30.539
4 2020-03-14 03:20:30.337
5 2020-03-14 03:20:31.340
6 2020-03-14 03:20:37.415
0 голосов
/ 24 марта 2020

Лучший способ - использовать pandas.to_datetime, как указано выше. Если вы не знакомы с форматированием строки даты, вы можете использовать библиотеки парсеров. Пример dateutil library:

# python -m pip install —user dateutil
from dateutil import parser
import pandas as pd

df = pd.DataFrame({'dates': ['Mar 16 03:40:24.411',' Mar 16 03:40:25.415','Mar 16 03:40:28.532']})

# parse it
df['dates'] = df['dates'].apply(parser.parse)
print(df)

dateutil parser добавит текущий год к вашим датам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...