首页 > 解决方案 > 在 Pandas 日期时间系列项目上调用函数进行过滤

问题描述

                 Date_Time     Open     High      Low    Close    Up  Down
0      2018-03-20 17:01:00  2723.25  2724.50  2723.25  2723.75   372   345
1      2018-03-20 17:02:00  2723.75  2724.25  2723.50  2724.00   127    49
2      2018-03-20 17:03:00  2724.00  2724.00  2723.75  2723.75    55    11
3      2018-03-20 17:04:00  2724.00  2724.50  2724.00  2724.00   105    25
...

我想过滤上面的数据,以便排除时间不在 15:00:00 和 17:00:00 之间的每一行。

我试过这个:

df.loc[df.Date_Time.time() > time(15, 0) & df.Date_Time.time() < time(17, 0)]

当然,这是行不通的,因为他试图调用time()Pandas 系列而不是它的元素。

AttributeError:“系列”对象没有属性“时间”

所以,我想我可以应用一个 lambda 函数:

df.apply(lambda x: x['Date_Time'].time() > time(15, 0))

但这也不起作用。

KeyError: ('Date_Time', '发生在索引 Date_Time')

这个也是:

df.apply(lambda x: x.Date_Time.time() < time(15, 0))

不起作用,我真的不明白为什么我会得到一个不同的错误。

AttributeError: ("'Series' 对象没有属性 'Date_Time'", '发生在索引 Date_Time')

这可以在一行中完成吗?还是我必须“手动”迭代整个系列?

标签: pythonpandas

解决方案


我想pandas你可以检查一下between_time

df.set_index(['Date_Time']).between_time('15:00:00', '17:00:00')

推荐阅读