【问题标题】:'>' not supported between instances of 'datetime.time' and 'datetime.datetime'在“datetime.time”和“datetime.datetime”的实例之间不支持“>”
【发布时间】:2018-11-06 09:55:54
【问题描述】:

我有一个这样的数据框:

        datetime          duration
0   2018-10-08 13:30:00    03:00
1   2018-10-08 16:40:00    00:11
2   2018-10-08 21:30:00    03:19
3   2018-10-09 03:21:00    04:27
4   2018-10-09 07:49:00    02:11

我尝试通过以下方式提取白天或夜间的行:

import datetime as dt

mask = (df_sleep['datetime'].dt.time > dt.datetime.strptime('08:00:00', '%H:%M:%S')) & (df_sleep['datetime'].dt.time < dt.datetime.strptime('21:00:00', '%H:%M:%S'))
df_sleep.loc[mask]

但它显示错误为:

TypeError: '>' not supported between instances of 'datetime.time' and 'datetime.datetime'

你有什么好主意如何解决这个问题吗?我是否必须将日期时间转换为字符串或整数?(仍然很难与之比较)

谢谢!

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    使用between_time

    df.set_index('datetime').between_time('08:00','21:00').reset_index()
    Out[351]: 
                 datetime duration
    0 2018-10-08 13:30:00    03:00
    1 2018-10-08 16:40:00    00:11
    

    将dt.hour 与您的面具创意结合使用

    mask=(df['datetime'].dt.hour>8)&(df['datetime'].dt.hour<21)
    mask
    Out[357]: 
    0     True
    1     True
    2    False
    3    False
    4    False
    Name: datetime, dtype: bool
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多