使用 .datetime 查找时间是在另一个时间之前还是之后

Posted

技术标签:

【中文标题】使用 .datetime 查找时间是在另一个时间之前还是之后【英文标题】:Finding if the time is before or after another time with .datetime 【发布时间】:2021-02-25 11:42:39 【问题描述】:

所以我在数据框中有一列数据,它是 .datetime 中的时间,在 HH:MM:SS 中。我只想检查时间是在第一班还是第二班,我在最后显示了这段代码,但我一直收到错误:

TypeError: 'DataFrame' 对象不可调用

有人有什么想法吗?提前致谢!

if df_data_time(df_data_time['Time']).between('00:00:00','11:59:59') == True:
    df_data_time['Time'] = 'Shift 1'
if df_data_time(df_data_time['Time']).between('12:00:00','23:59:59') == True:
    df_data_time['Time'] = 'Shift 2'

【问题讨论】:

【参考方案1】:

您正在寻找 pd.Series.between_time():

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.between_time.html.

但是我建议您通过首先将新列“Shift”设置为“Shift 1”然后通过布尔索引将“Shift”中的必要条目更改为“Shift 2”来简化代码:

df_data_time['Shift'] = 'Shift 1'
df_data_time.loc[df_data_time.Time.between_time('12:00:00','23:59:59'), 'Shift'] = 'Shift 2'

【讨论】:

感谢您的链接!但我仍然得到相同的 TypeError: 'DataFrame' object is not callable 错误 是的,我一开始没有注意到;我稍后会回来编辑我的帖子。您的问题是“between”和“between_time”都是返回布尔向量的 pd.Series 方法。因此,“语句 == True”的左侧已经是布尔值。 “== True”不是必需的!请尝试我的第二段代码;稍后我会回来更详细地向您解释您的问题所在! 同时,谷歌结合 between_time 对一个系列进行“布尔索引”;这应该对你有帮助! 我试过这样做,可能只是我做错了,因为我是新手,但我不断收到此错误:TypeError: Index must be DatetimeIndex i> 我能做些什么来阻止这种情况? 您能否在您的 DataFrame 中添加几行实际条目?我想给你写点东西!

以上是关于使用 .datetime 查找时间是在另一个时间之前还是之后的主要内容,如果未能解决你的问题,请参考以下文章

Python 中 time 模块与 datetime 模块在使用中的不同之处

如何使用 typeORM 在 Nestjs 中创建类型为 Date 的列并键入 DateTime?

python 使用datetime列查找pandas数据帧中的时间漏洞

Python之时间:datetime模块

如何在 DateTime 值数组中查找平均日期/时间

MySQL DATETIME 在一个表中显示正确的日期,但在另一个表中显示不正确的时间(总是午夜)?