gpt4 book ai didi

python - Pandas 中的日期时间比较搞乱了 datetime.time()

转载 作者:行者123 更新时间:2023-11-28 17:25:41 27 4
gpt4 key购买 nike

我有一个大型 Excel 文件,其中包含马拉松运动员的开始和结束时间。为了确定延迟开始时间后仍在赛道上的运行者数量,我尝试将数据导入 Pandas 并使用内置的 Pandas 比较来返回在特定时间运行的运行者列表。在给定时间 x,跑者在赛道上的开始时间 <= x 和结束时间 > x。但是在 Pandas 中,其中一个给我一个错误。

我已经使用 read_exel 从 Excel 导入了数据框它会自动将开始时间和结束时间转换为 Datetime.time对象。这是一些示例数据

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的类(class)运行者数量分钟。所以我设置了一些变量来处理这个问题:

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: Cannot compare datetime.time and unicode

事实上,df.start_time <= capture_time.time()非常好并且可以运行,但是 df.end_time <= capture_time.time()返回此错误。

我不知道这里发生了什么,我们将不胜感激。

最佳答案

你只需要添加 () 两次,第一次可以省略,但根据最佳实践也使用了:

pd[(pd.start_time <= capture_time.time()) & (pd.end_time <= capture_time.time())]

或者 end_time 列的 dtype 不是 datetime,因此您可以使用 to_datetime :

pd.end_time = pandas.to_datetime(pd.end_time)

我认为 DataFrame 的名称更好 df,那么你可以使用:

import pandas as pd

df.end_time = pd.to_datetime(df.end_time)

关于python - Pandas 中的日期时间比较搞乱了 datetime.time(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39242158/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com