我在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'
答案 0 :(得分:0)
您需要使用time
或timedelta
代替datetime
。您可以通过.dt.
methods
t = pd.to_datetime('10:15:00').time()
df['dtime'].dt.time < t
0 True
1 False
Name: dtime, dtype: bool