这段代码可以这样计算日期的频率:周一、周二、周三和周四一起计算,周六和周日一起计算。如何更改map函数的参数以获得两组日期的重复: 1.工作日的上午9点到下午5点;2.一周中的其余时间(工作日和周末的下午5点到9点)。
d = ['10/3/2013 18:36', '10/3/2013 23:40', '10/3/2013 20:56', '10/4/2013 9:35', '11/7/2013 10:02', '11/11/2013 14:45', '12/1/2013 12:04']
df = pd.DataFrame(pd.to_datetime(d), columns=["DATE"])
df["DATE"].dt.weekday.map({0:0,1:0,2:0,3:0,4:0,5:1,6:1}).value_counts()
发布于 2015-04-21 03:12:58
由于.map()
可以直接应用于系列,也可以采用任意函数,因此您可以使用:
df['DATE'].map(lambda dt:
'Office' if dt.weekday() in {0,1,2,3,4} and 9 <= dt.hour < 17
else 'Out of office'
).value_counts()
结果是:
Out of office 4
Office 3
dtype: int64
发布于 2015-04-21 03:14:02
Pandas有一些用于识别工作日的内置方法。实际上可能有一些用于工作时间的内置函数,但我不确定,因为我不经常处理datetimes:
df['in_business_hours'] = (
df['DATE'].map(pd.datetools.isBusinessDay) &
((9 <= df.DATE.dt.hour) & (df.DATE.dt.hour <= 16))
)
df['in_business_hours'].value_counts()
Out[14]:
False 4
True 3
dtype: int64
https://stackoverflow.com/questions/29761484
复制相似问题