首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用pandas.series.map编写代码统计日期的重复次数?

如何使用pandas.series.map编写代码统计日期的重复次数?
EN

Stack Overflow用户
提问于 2015-04-21 09:49:24
回答 2查看 98关注 0票数 0

这段代码可以这样计算日期的频率:周一、周二、周三和周四一起计算,周六和周日一起计算。如何更改map函数的参数以获得两组日期的重复: 1.工作日的上午9点到下午5点;2.一周中的其余时间(工作日和周末的下午5点到9点)。

代码语言:javascript
运行
复制
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()
EN

回答 2

Stack Overflow用户

发布于 2015-04-21 11:12:58

由于.map()可以直接应用于系列,也可以采用任意函数,因此您可以使用:

代码语言:javascript
运行
复制
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()

结果是:

代码语言:javascript
运行
复制
Out of office    4
Office           3
dtype: int64
票数 0
EN

Stack Overflow用户

发布于 2015-04-21 11:14:02

Pandas有一些用于识别工作日的内置方法。实际上可能有一些用于工作时间的内置函数,但我不确定,因为我不经常处理datetimes:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29761484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档