我目前正在构建一个程序来跟踪登录/注销,数据被导出为类似于"5:00AM“的字符串,我使用以下代码将数据从字符串转换为datetime64ns
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]
代码按预期工作,并将字符串更改为时间格式,但是,我注意到格式是1/1/1900 10:00:00 PM,我想知道是否有一种方法可以只获取像这样的时间,而不影响数据类型为datetime64ns,因为我必须为登录/注销创建验证
提前感谢
发布于 2019-05-21 07:41:30
在将其转换为datetime
格式后尝试使用dt.strftime
:
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
https://stackoverflow.com/questions/56229284
复制相似问题