Python pandas: извлечение даты и времени из отметки времени - PullRequest
2 голосов
/ 16 марта 2020

У меня есть столбец метки времени (Time), где метка времени имеет следующий формат

0       02.28.2020 10:21:26.0734 vorm.
1       02.28.2020 10:21:27.0720 vorm.
2       02.28.2020 10:21:30.0705 vorm.
3       02.28.2020 10:21:31.0742 vorm.
4       02.28.2020 10:21:32.0606 vorm.

3978    02.28.2020 11:30:11.1122 vorm.
3979    02.28.2020 11:30:12.1078 vorm.
3980    02.28.2020 11:30:13.1100 vorm.
3981    02.28.2020 11:30:14.1190 vorm.
3982    02.28.2020 11:30:15.1086 vorm.
Name: Time, Length: 3983, dtype: object

Я попытался преобразовать строковый объект в объект Timestamp следующим образом:

df['Time'] = [datetime.datetime.strptime(d, "%d.%m.%Y %H:%M:%S.%f %p.") for d in df["Time"]]

Но я получаю следующую ошибку:

ValueError: time data '02.28.2020 10:21:26.0734 vorm.' does not match format '%d.%m.%Y %H:%M:%S.%f %p.'

Я предполагаю, что ошибка происходит от "vorm.", Который является обозначением для "AM".

1 Ответ

3 голосов
/ 16 марта 2020

Используйте to_datetime с изменением формата на %H на %I для часов матча в формате 12H, также поменяйте местами %d и %m месяцев с днями и для правильного разбора AM и PM необходимо заменить значение в dict:

df['Time'] = pd.to_datetime(df["Time"].replace({'vorm.' :'AM'}, regex=True), 
                            format="%m.%d.%Y %I:%M:%S.%f %p")
print (df)
                           Time
0    2020-02-28 10:21:26.073400
1    2020-02-28 10:21:27.072000
2    2020-02-28 10:21:30.070500
3    2020-02-28 10:21:31.074200
4    2020-02-28 10:21:32.060600
3978 2020-02-28 11:30:11.112200
3979 2020-02-28 11:30:12.107800
3980 2020-02-28 11:30:13.110000
3981 2020-02-28 11:30:14.119000
3982 2020-02-28 11:30:15.108600
...