Изменить формат времени с 01.01.1900 22:00 до 22:00 - PullRequest
0 голосов
/ 21 мая 2019

В настоящее время я создаю программу для отслеживания входа / выхода в систему, данные экспортируются в виде строки типа «5:00 ​​AM», я использую следующий код для преобразования данных из строки в datetime64 [ns]

df = pd.DataFrame({ 'LoginTime' : ["10:00PM", "5:00AM", "11:00PM","7:00AM"],
                  'Logout Time' : ["6:00AM","2:00PM", "5:00AM", "5:00PM"]})

for c in df.columns:
      if c == 'LoginTime':
          df['LoginTime'] = pd.to_datetime(df['LoginTime'], format='%I:%M%p')
      elif c == 'Logout Time':
          df['Logout Time'] = pd.to_datetime(df['Logout Time'], format='%I:%M%p')

Результат будет следующим:

        LoginTime         Logout Time
      0 1900-01-01 22:00:00 1900-01-01 06:00:00
      1 1900-01-01 05:00:00 1900-01-01 14:00:00
      2 1900-01-01 23:00:00 1900-01-01 05:00:00
      3 1900-01-01 07:00:00 1900-01-01 17:00:00
      LoginTime      datetime64[ns]
      Logout Time    datetime64[ns]

Код работает, как ожидалось, и изменил строку на формат времени, однако я заметил, что формат - 01.01.1900, 22:00:00, я хотел бы знать, есть ли способ получить только время, подобное это 10:00:00 без указания типа данных как datetime64 [нс], так как я должен создать проверку для входа / выхода в систему

Заранее спасибо

1 Ответ

0 голосов
/ 21 мая 2019

Попробуйте использовать dt.strftime после преобразования его в datetime формат:

df = pd.DataFrame({'LoginTime':['1/1/1900 10:00:00 PM', '1/2/2018 05:00:00 AM']})

              LoginTime
0  1/1/1900 10:00:00 PM
1  1/2/2018 05:00:00 AM

df['LoginTime'] = pd.to_datetime(df['LoginTime']).dt.strftime('%I:%M %p')

  LoginTime
0  10:00 PM
1  05:00 AM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...