熊猫-将字符串转换为没有日期的时间

发布于 2021-01-29 19:32:16

我已经阅读了很多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>
关注者
0
被浏览
51
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    执行转换后,您可以使用datetimedt访问器仅访问hourtime组件:

    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%'

    关于您的最后评论,dtypedatetime.time不是datetime

    In [53]:
    df['time'].iloc[0]
    
    Out[53]:
    datetime.time(10, 53)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看