Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 熊猫会得到属于工作时间或工作日的日期时间戳_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 熊猫会得到属于工作时间或工作日的日期时间戳

Python 3.x 熊猫会得到属于工作时间或工作日的日期时间戳,python-3.x,pandas,Python 3.x,Pandas,从给定列表中找出所有营业时间和营业日。我看了几篇关于熊猫补偿的文档,但没能弄明白。但是没有运气 >>> d = {'hours': ['2020-02-11 13:44:53', '2020-02-12 13:44:53', '2020-02-11 8:44:53', '2020-02-02 13:44:53']} >>> df = pd.DataFrame(d) >>> df hours 0 2020-02

从给定列表中找出所有
营业时间
营业日
。我看了几篇关于熊猫补偿的文档,但没能弄明白。但是没有运气

>>> d = {'hours': ['2020-02-11 13:44:53', '2020-02-12 13:44:53', '2020-02-11 8:44:53', '2020-02-02 13:44:53']}
>>> df = pd.DataFrame(d)
>>> df
                hours
0  2020-02-11 13:44:53
1  2020-02-12 13:44:53
2   2020-02-11 8:44:53

3  2020-02-02 13:44:53
>>> y = df['hours']
>>> from pandas.tseries.offsets import *
>>> y.apply(pd.Timestamp).asfreq(BDay())
1970-01-01   NaT
Freq: B, Name: hours, dtype: datetime64[ns]
>>> y.apply(pd.Timestamp).asfreq(BusinessHour())
Series([], Freq: BH, Name: hours, dtype: datetime64[ns])

我想,您正在寻找类似于:

bh = pd.offsets.BusinessHour()   # avoid not necessary imports
y.apply(pd.Timestamp).apply(bh.rollforward)
结果是:

0   2020-02-11 13:44:53
1   2020-02-12 13:44:53
2   2020-02-11 09:00:00
3   2020-02-03 09:00:00
Name: hours, dtype: datetime64[ns]
因此:

  • 前两个小时未更改(在营业时间内)
  • 第三次(2020-02-11 8:44:53)已提前到9:00(第二次世界大战开始) 工作日)
  • 第四个(周日2020-02-02 13:44:53)已提前到下一个 第二天(星期一)9:00
或者,如果您只想检查特定日期/小时是否在 营业时间,运行时间:

y.apply(pd.Timestamp).apply(bh.onOffset)
结果是:

0     True
1     True
2    False
3    False
Name: hours, dtype: bool

这意味着最后两个日期/小时在工作时间之外。

我认为
asfreq
是为了设置新的频率,所以我认为OP需要设置日期或工作时间频率(对于我不工作的人)@Valdi_Bo-Perfect:)
onOffset
将为我做这项工作。非常感谢你。我在pythonshell上测试我的代码,所以导入的*;)