Pandas 24 小时格式的 strftime
Pandas strftime with 24 hour format
问题
当提供的时间长度为两个字符时,如何将 24 小时制转换为 12 小时制?例如:如何将 45 格式化为 12:45 AM.
尝试
我可以通过以下方式获得大部分时间的正确格式转换:
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。有谁知道如何创建正确的输出?
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
问题
当提供的时间长度为两个字符时,如何将 24 小时制转换为 12 小时制?例如:如何将 45 格式化为 12:45 AM.
尝试
我可以通过以下方式获得大部分时间的正确格式转换:
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。有谁知道如何创建正确的输出?
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