熊猫-将字符串转换为没有日期的时间
我已经阅读了很多SO答案,但是找不到明确的解决方案。
我在称为day1
小时的df中有此数据:
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
参数不起作用-如何获得没有显示日期的时间?
更新资料
以下内容可以正确设置时间格式,但是以某种方式,该列仍然是对象类型。为什么不转换为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>
-
执行转换后,您可以使用datetime
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%'
关于您的最后评论,dtype
datetime.time
不是datetime
:In [53]: df['time'].iloc[0] Out[53]: datetime.time(10, 53)