过滤多个 between_time 和 ID 条件
Posted
技术标签:
【中文标题】过滤多个 between_time 和 ID 条件【英文标题】:Filtering Multiple between_time and ID condition 【发布时间】:2019-01-30 20:26:23 【问题描述】:我知道这些工具在特定时间范围内会发生一些事件,不幸的是,这些事件发生在不同工具的不同时间范围内。我正在努力将数据过滤到 2-3 小时的时间范围内,以便量化改进并在修复前后进行比较。我知道我们可以使用 pandas between_time 根据时间过滤数据,但是,我不确定如何通过 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】:您可以使用 indexer_between_time
在单个 loc
中执行此操作:
report1[(report1['Eqp_ID'] == 'dmv2361') && report1.index.indexer_between_time('01:30', '04:30')]
注意:这就是 between_time
的内部名称。
【讨论】:
alc=report1[report1["Eqp_ID"].isin(['dmv2360', 'dmv2361', 'dmv2362', 'dmv2363', 'dmv2370', 'dmv2371', 'dmv2372', 'dmv2373', 'dmv2374'])].sort_values(by='Start_Date', 升序=True)。 between_time('23:30-02:30', '01:30-04:30', '等等') 这就是我所期待的。我不确定它是否可能以上是关于过滤多个 between_time 和 ID 条件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PySpark 中复制 Pandas 的 between_time 函数