掩盖熊猫在工作日中的特定时间段

ManreeRist

我有一个pandas.Dataframe,看起来像这样:

                            A
date                            
2017-07-22 04:30:00  2707.500000
2017-07-22 05:00:00  2715.400000
2017-07-22 05:30:00  2759.300000
2017-07-22 06:00:00  2755.079086
2017-07-22 08:30:00  2840.000000
2017-07-22 09:00:00  2817.500000
2017-07-22 09:30:00  2818.900000
2017-07-22 10:00:00  2838.300000
2017-07-22 10:30:00  2865.300000
2017-07-22 11:00:00  2888.800000
...                          ...
...                          ...
2017-08-03 11:30:00  2742.000000
2017-08-03 12:00:00  2737.000000
2017-08-03 12:30:00  2732.000000
2017-08-03 13:00:00  2738.000000
2017-08-03 13:30:00  2742.800000
2017-08-03 14:00:00  2736.900000
2017-08-03 14:30:00  2733.300000
2017-08-03 15:00:00  2739.400000

..等等

我正在尝试做的是创建一个掩码,该掩码选择日期为工作日且小时数均在[X]和[Y]内的所有行。

例:

mask = SELECT ROWS where Date is a Weekday and Hour is greater than 9am and less than 5pm

我的想法一直是这样的:

newdf = df.apply(lambda x : np.where(pd.date_range(??, ??).weekday), axis=1)

我也看到了对某些“ isin ”函数的引用

总的来说,我对此非常执着,并没有通过谷歌搜索找到更多合适的方法。任何帮助,不胜感激。

这是一种方法

In [1140]: (df.index.hour >= 9) & (df.index.hour <= 17) & (df.index.weekday < 5)
Out[1140]:
array([False, False, False, False, False, False, False, False, False,
       False,  True,  True,  True,  True,  True,  True,  True,  True], dtype=bool)

In [1141]: df[(df.index.hour >= 9) & (df.index.hour <= 17) & (df.index.weekday < 5)]
Out[1141]:
                          A
date
2017-08-03 11:30:00  2742.0
2017-08-03 12:00:00  2737.0
2017-08-03 12:30:00  2732.0
2017-08-03 13:00:00  2738.0
2017-08-03 13:30:00  2742.8
2017-08-03 14:00:00  2736.9
2017-08-03 14:30:00  2733.3
2017-08-03 15:00:00  2739.4

而且,如果您的数据不需要工作日检查,则可以使用时间过滤功能 between_time

In [1144]: df.between_time('9:00AM', '5:00PM')
Out[1144]:
                          A
date
2017-07-22 09:00:00  2817.5
2017-07-22 09:30:00  2818.9
2017-07-22 10:00:00  2838.3
2017-07-22 10:30:00  2865.3
2017-07-22 11:00:00  2888.8
2017-08-03 11:30:00  2742.0
2017-08-03 12:00:00  2737.0
2017-08-03 12:30:00  2732.0
2017-08-03 13:00:00  2738.0
2017-08-03 13:30:00  2742.8
2017-08-03 14:00:00  2736.9
2017-08-03 14:30:00  2733.3
2017-08-03 15:00:00  2739.4

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章