我有一个大型的Excel文件,其中包含马拉松选手的起跑和终点时间。为了确定在延迟的开始时间后仍在赛道上的选手数量,我尝试将数据导入Pandas,并使用内置的pandas比较来返回在某个特定时间正在奔跑的选手列表。在给定时间x,赛道上的选手必须具有开始时间<= x和结束时间> x。然而,在Pandas中,其中一个会出现错误。
我已经使用read_excel从Excel导入了数据框,它自动将开始时间和结束时间转换为Datetime.time对象。以下是一些示例数据。
然后我尝试使用Pandas内置的选择功能来选择正确的行。
我已经使用read_excel从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()]
然而我遇到了错误:
类型错误:无法比较datetime.time和unicode
实际上,df.start_time <= capture_time.time()
是完全正常的并且可以运行,但是df.end_time <= capture_time.time()
会返回此错误。
我不知道这里发生了什么事情,任何帮助都将不胜感激。
type(df.end_time[0])
时,返回的是datetime.time。当我运行代码df[df.end_time > capture_time.time()]
时,我得到了相同的原始错误,因此我不认为这是分组问题。 - Calvin Cottondf = pd.DataFrame({'end_time':[datetime.time(10,11,10),datetime.time(11,10,23),datetime.time(12,12,4)], 'start_time':[datetime.time(10,11,7),datetime.time(11,10,20),datetime.time(12,12)],})
。 - jezraeldatetime.time
。非常感谢你!! - Calvin Cotton