仅将datetime中的时间与表单HH:MM:SS中的字符串进行比较

时间:2017-07-17 08:35:28

标签: python pandas python-datetime

我在pandas df中有一个列,字符串日期时间如下

a,dtime
1,2017-07-06 09:15:00
1,2017-07-06 10:15:00

我正在编写一个需要比较时间的脚本

我需要比较df[df.dtime < "10:15:00"](没有日期) 所以我换了df['dtime']=pd.to_datetime(df['dtime']) 如果我做

df[df.dtime < "10:15:00"]

它以今天的日期为默认值,并且总是与今天的“10:15:00”比较我不想要的。

所以我创建了另一个专栏,然后就像下面那样

df['ts']=df.dtime.apply(lambda x: x.time())
df[df.ts<"09:16:00"]
TypeError: can't compare datetime.time to str
df[df.ts<pd.to_datetime("09:16:00").time()] #this works well

有没有更好的方法来完成这个简单的任务,我没有看到任何一点创建一个新的ts列。

当我这样做的时候 df['dtime']=pd.to_datetime(df['dtime'])我应该只提取时间部分。但是df['dtime']=pd.to_datetime(df['dtime']).time()执行错误AttributeError: 'Series' object has no attribute 'time'

1 个答案:

答案 0 :(得分:0)

您需要使用timetimedelta代替datetime。您可以通过.dt. methods

访问它
t = pd.to_datetime('10:15:00').time()
  

df['dtime'].dt.time < t

0    True
1    False
Name: dtime, dtype: bool