python - 在 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')
这可以在一行中完成吗?还是我必须“手动”迭代整个系列?
解决方案
我想pandas
你可以检查一下between_time
df.set_index(['Date_Time']).between_time('15:00:00', '17:00:00')
推荐阅读
- coq - Coq 中的“eq^~”是什么意思?
- javascript - 在进入子屏幕之前反应本机列表更新错误状态
- javascript - 尝试使用 Node.Js 和 Mongoose 将 API 数据发送到 MongoDB
- python - Lepton PureThermal 在 Python3 OpenCV 中不起作用
- recursion - 为什么这个递归 Pascal 过程没有陷入无限循环?
- java - 将状态传递给每个行为是否使其成为“上帝对象”
- .net - 如何在不更新文件上传字段的情况下更新实体
- sql - 将一个表定义为高于另一个表的优先级,然后根据表优先级选择属性
- snakemake - 我可以为snakemake 定义一个默认配置文件吗?
- r - Tidymodels - 在 XGBoost 分类模型中使用 PCA 输出