过滤多个between_time和ID条件

时间:2019-01-30 20:26:24

标签: pandas time between

我知道这些工具在特定时间范围内发生了一些事件,不幸的是,这些事件在不同工具的不同时间范围内发生。我正在努力将数据过滤到2-3小时的时间范围,因此,我可以量化改进并在修复前后进行比较。我知道我们可以使用熊猫之间的时间来过滤数据,但是,我不确定如何通过eqp_id以及不同的时间范围来过滤数据。我正在做的是一种粗略的方法,如果你们中的任何人有一个更好,更有效的解决方案,我将不胜感激。

dmv2361=report1[report1['Eqp_ID'] == 'dmv2361']
df_2361=ALC2361.between_time('01:30', '04:30')

dmv2362=report1[report1['Eqp_ID'] == 'dmv2362']
df_2362=ALC2362.between_time('03:30', '06:30')

dmv2363=report1[report1['Eqp_ID'] == 'dmv2363']
dmv2363=ALC2363.between_time('05:30', '08:30')

I am expecting something like this or better way

alc= report1[report1["Eqp_ID"].isin(['dmv2360', 'dmv2361', 'dmv2362', 'dmv2363', 'dmv2370', 'dmv2371', 'dmv2372', 'dmv2373', 'dmv2374'])].sort_values(by='Start_Date', ascending=True). between_time('23:30-02:30', '01:30-04:30', 'so on') 

1 个答案:

答案 0 :(得分:0)

您可以使用indexer_between_time在单个loc内执行此操作:

report1[(report1['Eqp_ID'] == 'dmv2361') && report1.index.indexer_between_time('01:30', '04:30')]

注意:这就是between_time中的内幕。