如果我从 startdate 和 enddate 在 weekmask 列表中得到星期一,我想更改 CustomBusinessHour 中的开始结束时间。
开始 = 00:01 结束 = 23:59
如果我得到周一黑白开始日期和结束日期,我正在尝试将此开始更改为 07:00 并结束 =23:59
data = {
'start': ['2018-10-29 18:48:46.697000',
'2018-10-29 19:01:10.887000',
'2018-10-22 17:42:24.467000'],
'end': ['2018-10-31 17:56:38.830000',
'2018-11-27 09:31:39.967000',
'2018-11-28 18:33:35.243000' ]
}
df = pd.DataFrame(data)
bh = CustomBusinessHour(calendar=USFederalHolidayCalendar(),start='00:01', end='23:59')
df['Hours_diff'] = df.apply(lambda x: len(pd.date_range(start=x.start, end=x.end, freq= bh)),axis=1)
你可以使用apply
用一个函数来提供开始和结束datetime
对于每一行。然后你在你的上面使用一个面具CustomBusinessHour
.
import pandas as pd
from pandas.tseries.offsets import CustomBusinessHour
from pandas.tseries.holiday import USFederalHolidayCalendar
data = {
'start': ['2018-10-29 18:48:46.697000',
'2018-10-29 19:01:10.887000',
'2018-10-22 17:42:24.467000'],
'end': ['2018-10-31 17:56:38.830000',
'2018-11-27 09:31:39.967000',
'2018-11-28 18:33:35.243000' ]
}
df = pd.DataFrame(data)
bh = CustomBusinessHour(calendar=USFederalHolidayCalendar(), start='00:01', end='23:59')
def f(x):
idx = pd.date_range(start=x.start, end=x.end, freq= bh)
mask = ~((idx.dayofweek == 0) & (idx.hour <= 7))
return len(idx[mask])
df['Hours_diff'] = df.apply(f, axis=1)
Gives
start end Hours_diff
0 2018-10-29 18:48:46.697000 2018-10-31 17:56:38.830000 42
1 2018-10-29 19:01:10.887000 2018-11-27 09:31:39.967000 391
2 2018-10-22 17:42:24.467000 2018-11-28 18:33:35.243000 527
确保它是正确的,我没有检查过。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)