首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas中的Datetime比较与datetime.time()

问Pandas中的Datetime比较与datetime.time()
EN

Stack Overflow用户
提问于 2016-08-31 06:24:40
回答 1查看 1.9K关注 0票数 3

我有一个大型的excel文件,为马拉松运动员提供启动和完成时间。为了确定延迟开始时间后仍在跑道上的跑步者的数量,我尝试将数据导入Pandas,并使用内置的熊猫比较,以返回在特定时间跑步的运动员的列表。在给定的时间x,跑道上的跑步者将有一个开始时间<= x和一个结束时间>x。然而,在Pandas中,其中一个给了我一个错误。

我使用read_exel从Excel中导入了数据,它自动将开始时间和结束时间转换为Datetime.time对象。以下是一些样本数据

代码语言:javascript
复制
df = pd.DataFrame(
{'name':['Bob','Sue','Joe'],
 'start_time':[datetime.time(6,50,0),datetime.t‌​ime(6,55,0),dateti‌​me.time(7,0,0)], 
 'start_time':[datetime.time(7,15,04),datetime.time(7,21,41)‌​,datetime.time(7,23,24)],})

跑步者从6:50开始,我想每隔4分钟列一张跑步者的名单。所以我设置了一些变量来处理这个问题:

代码语言:javascript
复制
race_start = datetime.datetime(100,1,1,6,50)
intervaul = datetime.timedelta(minutes = 4)
capture_time = race_start

然后,我尝试使用内置在选择中的Pandas来选择正确的行。

代码语言:javascript
复制
df[df.start_time <= capture_time.time() & df.end_time > capture_time.time()]

然而,我得到了错误:

TypeError:无法比较datetime.time和unicode

实际上,df.start_time <= capture_time.time()非常好并运行,但是df.end_time <= capture_time.time()返回这个错误。

我不知道这里发生了什么,如果能提供任何帮助,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 06:25:48

您只需要添加两次(),首先可以省略,但是也使用了最佳实践:

代码语言:javascript
复制
pd[(pd.start_time <= capture_time.time()) & (pd.end_time <= capture_time.time())]

或者dtype of end_time列不是datetime,所以您可以使用to_datetime

代码语言:javascript
复制
pd.end_time = pandas.to_datetime(pd.end_time)

我认为DataFrame的名称是更好的df,然后您可以使用:

代码语言:javascript
复制
import pandas as pd

df.end_time = pd.to_datetime(df.end_time)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39242158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档