【发布时间】:2017-01-07 14:30:14
【问题描述】:
我有一个大型 Excel 文件,其中包含马拉松运动员的开始和结束时间。为了确定延迟开始时间后仍然在赛道上的跑步者数量,我尝试将数据导入 Pandas 并使用内置的 pandas 比较来返回在特定时间跑步的跑步者列表。在给定时间 x,赛道上的跑步者将有一个开始时间 x。然而,在 Pandas 中,其中一个给了我一个错误。
我使用 read_exel 从 Excel 导入数据框,它会自动将开始时间和结束时间转换为 Datetime.time 对象。这是一些示例数据
df = pd.DataFrame(
{'name':['Bob','Sue','Joe'],
'start_time':[datetime.time(6,50,0),datetime.time(6,55,0),datetime.time(7,0,0)],
'start_time':[datetime.time(7,15,04),datetime.time(7,21,41),datetime.time(7,23,24)],})
跑步者从6:50 开始,我想每4 分钟列出一次赛道上的跑步者数量。所以我设置了一些变量来处理它:
race_start = datetime.datetime(100,1,1,6,50)
intervaul = datetime.timedelta(minutes = 4)
capture_time = race_start
然后我尝试使用 Pandas 内置的选择来选择正确的行
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() 返回这个错误。
我不知道这里发生了什么,如果有任何帮助,我们将不胜感激。
【问题讨论】:
标签: python datetime pandas indexing time