Pandas Strftime с 24-часовым форматом - PullRequest
1 голос
/ 25 июня 2019

ВОПРОС

Как преобразовать 24-часовое время в 12-часовое, если предоставленное время составляет два символа?Например: Как отформатировать 45 как 0:45.

ATTEMPT

Я могу получить большинство преобразований времени для правильного форматирования с помощью следующего:

df=df.assign(newtime=pd.to_datetime(df['Time Occurred'], format='%H%M').dt.strftime("%I:%M %p"))
df.head()

Date Reported   Date Occurred  Time Occurred    newtime
9/13/2010       9/12/2010       45          4:05 AM
8/9/2010        8/9/2010        1515        3:15 PM
1/8/2010        1/7/2010        2005        8:05 PM
1/9/2010        1/6/2010        2100        9:00 PM
1/15/2010       1/15/2010       245         2:45 AM

В приведенном выше примере значения в newtime правильно отформатированы, за исключением случаев, когда во входном времени указано «45» - это время имело результат 4:05 AM.Кто-нибудь знает, как создать правильный вывод?

1 Ответ

2 голосов
/ 25 июня 2019

to_datetime

times = pd.to_datetime([
    f'{h:02d}:{m:02d}:00' for h, m in zip(*df['Time Occurred'].astype(int).__divmod__(100))
])
df.assign(newtime=times.strftime('%I:%M %p'))

   Time Occurred   newtime
0             45  12:45 AM
1           1515  03:15 PM
2           2005  08:05 PM
3           2100  09:00 PM
4            245  02:45 AM
...