我已经阅读了很多SO答案,但是找不到明确的解决方案。
我在称为day1小时的df中有此数据:
day1
1 10:53 2 12:17 3 14:46 4 16:36 5 18:39 6 20:31 7 22:28 Name: time, dtype: object>
我想将其转换为时间格式。但是当我这样做时:
day1.time = pd.to_datetime(day1.time, format='H%:M%')
结果包括今天的日期:
1 2015-09-03 10:53:00 2 2015-09-03 12:17:00 3 2015-09-03 14:46:00 4 2015-09-03 16:36:00 5 2015-09-03 18:39:00 6 2015-09-03 20:31:00 7 2015-09-03 22:28:00 Name: time, dtype: datetime64[ns]>
看来format参数不起作用-如何获得没有显示日期的时间?
format
更新资料
以下内容可以正确设置时间格式,但是以某种方式,该列仍然是对象类型。为什么不转换为datetime64?
datetime64
day1['time'] = pd.to_datetime(day1['time'], format='%H:%M').dt.time
1 10:53:00 2 12:17:00 3 14:46:00 4 16:36:00 5 18:39:00 6 20:31:00 7 22:28:00 Name: time, dtype: object>
执行转换后,您可以使用datetimedt访问器仅访问hour或time组件:
dt
hour
time
In [51]: df['hour'] = pd.to_datetime(df['time'], format='%H:%M').dt.hour df Out[51]: time hour index 1 10:53 10 2 12:17 12 3 14:46 14 4 16:36 16 5 18:39 18 6 20:31 20 7 22:28 22
另外,您的格式字符串H%:M%格式不正确,可能会引起ValueError: ':' is a bad directive in format 'H%:M%'
H%:M%
ValueError: ':' is a bad directive in format 'H%:M%'
关于您的最后评论,dtypedatetime.time不是datetime:
datetime.time
datetime
In [53]: df['time'].iloc[0] Out[53]: datetime.time(10, 53)