使用python过滤数据框中的时间
Posted
技术标签:
【中文标题】使用python过滤数据框中的时间【英文标题】:Filter time in a dataframe using python 【发布时间】:2022-01-22 12:32:10 【问题描述】:我有一个只有时间的专栏。阅读该 CSV 文件后,我将该列转换为 datetime 数据类型,因为当我在 jupyter notebook 中阅读它时它是对象。当我尝试过滤时,出现如下错误
TypeError: Index must be DatetimeIndex
代码
newdata = newdata['APPOINTMENT_TIME'].between_time('14:30:00', '20:00:00')
样本数据
APPOINTMENT_TIME Id
13:30:00 1
15:10:00 2
18:50:00 3
14:10:00 4
14:00:00 5
我在这里尝试显示约会时间在 14:30:00 到 20:00:00 之间的行 datatype info
谁能帮忙。提前致谢
【问题讨论】:
【参考方案1】:between_time
是一种特殊的方法,它使用日期时间对象作为索引,这不是你的情况。如果你有像2021-12-21 13:30:00
这样的数据会很有用
在您的情况下,您可以只对字符串使用 between
方法,并且您的格式 HH:MM:SS
的时间将自然排序:
filtered_data = newdata[newdata['APPOINTMENT_TIME'].between('14:30:00', '20:00:00')]
输出:
APPOINTMENT_TIME Id
1 15:10:00 2
2 18:50:00 3
注意。您不能使用从午夜之前开始到午夜之后结束的范围。
【讨论】:
我试过你的代码并得到错误TypeError: '>=' not supported between instances of 'datetime.time' and 'str'
。该列的数据类型是对象。你能帮忙吗?
看起来你有一个日期时间(或混合)类型。您能否提供具有正确类型的可重现数据框?
我在主要问题中添加了关于数据类型的内容。你能检查一下吗
检查您的专栏,您可能混合了日期时间类型和其他类型(无、字符串...)。一个(肮脏的)选项是使用newdata['APPOINTMENT_TIME'].astype(str).between(...)
,但最好弄清楚数据发生了什么。以上是关于使用python过滤数据框中的时间的主要内容,如果未能解决你的问题,请参考以下文章