【发布时间】:2021-10-26 06:09:28
【问题描述】:
我有一个包含 datetime 列的 pandas DataFrame,我想过滤当前小时和 10 小时前之间的数据框。我尝试了不同的方法来做到这一点,但我仍然无法处理它。因为当我想使用 pandas 时,列类型是 Series,我无法使用 timedelta 来比较它们。如果我使用 for 循环将列作为字符串与我的时间间隔进行比较,则效率不高。
表格是这样的:
我想过滤当前时间和 10 小时前之间的“日期时间”列,然后根据“周”> 80 进行过滤。
我也尝试过这些代码,但没有奏效:
filter_criteria = main_table['dateTime'].sub(today).abs().apply(lambda x: x.hours <= 10)
main_table.loc[filter_criteria]
这会返回一个错误:
TypeError: 不支持的操作数类型 -: 'str' 和 'datetime.datetime'
同样,这段代码也有同样的问题:
main_table.loc[main_table['dateTime'] >= (datetime.datetime.today() - pd.DateOffset(hours=10))]
还有:
main_table[(pd.to_datetime('today') - main_table['dateTime'] ).dt.hours.le(10)]
在上面的所有代码中 main_table 是我的数据框的名称。
如何过滤它们?
【问题讨论】:
-
您是否已将您的日期时间列转换为实际的日期时间对象?你可以使用
to_datetime() -
我应该导入什么来做到这一点? ` import datetime check = datetime.to_datetime(main_table['dateTime']) print(check - - timedelta(hours=10)) `
-
它是 pandas 方法之一。你可以在这里看到它是如何完成的:geeksforgeeks.org/…
-
我试过这个:check = pd.to_datetime(main_table['dateTime']) 但我仍然不知道如何过滤两个小时之间的数据帧!
-
我已经打印了检查类型以确定结果,不幸的是它仍然是熊猫系列:
标签: pandas datetime filter time compare