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上测试我的代码,所以导入的*;)