一周七天如何获取当前所在的周一的日期

时间: 2024-12-21 22:28:36 浏览: 44
null
阅读全文

相关推荐

def get_5_workdays_back(end_date=None): """计算从结束日期倒推5个工作日的起始日期""" end_date = pd.Timestamp.now().normalize() if end_date is None else end_date count = 0 current_date = end_date # 复用原有节假日配置 holidays = [ # 元旦(不调休) '2025-01-01', # 周三 # 春节(调休2天) '2025-01-28', '2025-01-29', '2025-01-30', '2025-01-31', '2025-02-01', '2025-02-02', '2025-02-03', '2025-02-04', # 1.28(除夕)-2.4 # 清明节(不调休) '2025-04-04', '2025-04-05', '2025-04-06', # 周五-周日 # 劳动节(调休1天) '2025-05-01', '2025-05-02', '2025-05-03', '2025-05-04', '2025-05-05', # 周四-周一 # 端午节(不调休) '2025-05-31', '2025-06-01', '2025-06-02', # 周六-周一 # 中秋节+国庆节(调休2天) '2025-10-01', '2025-10-02', '2025-10-03', '2025-10-04', '2025-10-05', '2025-10-06', '2025-10-07', '2025-10-08' # 周三-下周三 ] holiday_dates = pd.to_datetime(holidays) # 新增调休工作日列表(转换为日期格式) workdays_adjustment = [ '2025-01-26', # 周日补春节 '2025-02-08', # 周六补春节 '2025-04-27', # 周日补劳动节 '2025-09-28', # 周日补国庆 '2025-10-11' # 周六补国庆 ] adjustment_dates = pd.to_datetime(workdays_adjustment) # 转换日期格式 while count < 5: current_date -= pd.Timedelta(days=1) # 判断是否为有效工作日 is_workday = ( (current_date.weekday() < 5 or current_date in adjustment_dates) and current_date not in holiday_dates ) if is_workday: count += 1 return current_date, end_date # 获取处理后的数据 df = getchaoshi() # 计算时间范围 start_date, end_date = get_5_workdays_back() date_mask = (df['收案时间'] >= start_date) & (df['收案时间'] <= end_date) weekly_cases = df[date_mask].copy() # 计算上周时间范围 last_week_start, _ = get_5_workdays_back(start_date) date_mask_last_week = (df['收案时间'] >= last_week_start) & (df['收案时间'] < start_date) last_weekly_cases = df[date_mask_last_week].copy() # 分组统计上周数据 last_week_stats = last_weekly_cases.groupby('组别')['案件状态'].count().reset_index() last_week_stats.columns = ['组别', '上周总案件数'] # 新增:统计上周已完成案件(根据结案时间) date_mask_last_week_closed = (df['结案时间'] >= last_week_start) & (df['结案时间'] < start_date) last_week_closed_cases = df[date_mask_last_week_closed].copy() # 分组统计上周已完成数据 last_week_closed_stats = last_week_closed_cases.groupby('组别')['案件状态'].count().reset_index() last_week_closed_stats.columns = ['组别', '上周已完成情况'] # 添加状态分类列 weekly_cases['状态分类'] = weekly_cases['案件状态'].apply( lambda x: '已完成' if x in ['办结', '发件'] else '正在处理' ) # 分组统计 result = weekly_cases.groupby('组别').agg( 总案件数=('案件状态', 'count'), 已完成=('状态分类', lambda x: (x == '已完成').sum()), 处理中=('状态分类', lambda x: (x == '正在处理').sum()), 超时案件数=('是否超时', lambda x: (x == '是').sum()), 缓办案件数=('是否缓办', lambda x: (x == '是').sum()) # 新增行 ).reset_index() # # 合并上周数据 # result = result.merge(last_week_stats, on='组别', how='left').fillna(0) # 合并三组数据(原代码基础上增加新列) result = result.merge(last_week_stats, on='组别', how='left') result = result.merge(last_week_closed_stats, on='组别', how='left').fillna(0) # 新增:添加总计行(核心修改点) total_row = { '组别': '总计', '总案件数': result['总案件数'].sum(), '已完成': result['已完成'].sum(), '处理中': result['处理中'].sum(), '超时案件数': result['超时案件数'].sum(), '缓办案件数': result['缓办案件数'].sum(), '上周总案件数': result['上周总案件数'].sum(), '上周已完成情况': result['上周已完成情况'].sum() # 新增列 } result = pd.concat([result, pd.DataFrame([total_row])], ignore_index=True) # 结果展示样例 print(result.to_markdown(index=False)) # 创建Excel写入对象(注意:需要安装openpyxl) with ExcelWriter('GCB案件统计结果t4.xlsx', engine='openpyxl') as writer: # 将result写入Sheet1 result.to_excel(writer, sheet_name='按周统计情况', index=False) # 将原始数据写入Sheet2 weekly_cases.to_excel(writer, sheet_name='本周案件', index=False) # 将原始数据写入Sheet3 df.to_excel(writer, sheet_name='所有案件', index=False)输出按周统计情况的表中,增加一列“查询时间”到第一列,输出程序运行的时间,并合并第一列下面的6行,均显示这个时间

最新推荐

recommend-type

订单管理部组织架构职责及岗位设置.doc

订单管理部组织架构职责及岗位设置.doc
recommend-type

编程基础变量与数据类型详解:Java中变量原理、使用及类型转换规则综述

内容概要:本文档详细介绍了编程语言中的变量概念及其相关知识点。从变量作为程序的基本组成单位出发,阐述了变量的定义、使用步骤、注意事项等基础内容。接着深入探讨了数据类型,包括整数类型、浮点类型、字符类型(char)、布尔类型(boolean),并解释了它们各自的特性、使用细节及在内存中的存储方式。此外,文档还介绍了Java API文档的作用,以及字符编码表的不同类型(ASCII、Unicode、UTF-8、GBK、GB2312、BIG5)。最后,重点讲解了基本数据类型之间的自动类型转换和强制类型转换规则,以及基本数据类型与String类型之间的转换方法。 适合人群:初学者或有一定编程基础的学习者,尤其是正在学习Java语言的学员。 使用场景及目标:①帮助理解变量的概念及其在程序中的作用;②掌握不同类型变量的声明、赋值及使用规则;③了解各种数据类型的特性及应用场景;④学会正确地进行数据类型之间的转换,避免因类型不匹配导致的错误。 阅读建议:本资料适合初次接触编程或Java语言的学习者,建议结合实际编程练习来加深对变量和数据类型的理解,同时注意区分不同类型间的差异,熟悉转换规则,以提高代码编写的准确性和效率。
recommend-type

腾讯人力资源管理系统地地研究.doc

腾讯人力资源管理系统地地研究.doc
recommend-type

战略合作协议书优秀范本.doc

战略合作协议书优秀范本.doc
recommend-type

财务管理案例本科课程教学进度计划表.doc

财务管理案例本科课程教学进度计划表.doc
recommend-type

解决无法获取网络图片问题,提供PNG素材下载

根据提供的文件信息,我们可以确定知识点主要集中在网络图片获取、素材下载以及特定格式PNG图片的使用和命名规则上。 首先,我们来探讨“无法获取网络图片”这一问题。在互联网环境中,获取网络图片的过程通常涉及几个关键技术点:HTTP/HTTPS协议、网络请求处理、图片资源的定位与下载、以及浏览器或者应用程序对图片的缓存和处理。在这一过程中可能会遇到的问题有网络连接问题、目标服务器配置错误、资源访问权限受限、图片资源不存在或已被移除、跨域访问限制(CORS)、以及客户端代码错误等。 对于“素材下载 PNG素材 网页素材”,我们需要了解PNG图片的特性以及素材下载的相关技术。PNG(Portable Network Graphics)是一种无损数据压缩的位图图形格式,它支持索引、灰度、RGB三种颜色模式以及alpha通道透明度。PNG格式广泛用于网络图片下载,因为它提供了优秀的压缩性能且没有版权限制。在网页设计中,PNG图片因其高保真的特性,可以作为网页背景、图标和按钮的素材。素材下载通常是设计师或者开发人员通过搜索引擎、专门的素材网站或者内容分发网络(CDN)来获取所需的图片、音频、视频等资源。 紧接着,“无法获取网络图片”这一标签指向了一个普遍的技术问题,即客户端在尝试从互联网上下载图片资源时遭遇的失败。这可能发生在使用Web浏览器、桌面应用程序、移动应用或者任何其它形式的客户端软件上。问题的原因可能包括客户端网络设置问题、防火墙限制、代理服务器配置、DNS解析错误等。 最后,观察压缩包子文件的文件名称列表,我们可以看到三个不同的文件名:“无法获取网络@3x.png”、“无法获取网络@2x.png”以及“无法获取网络.png”。这些名称暗示了这些图片可能被用作网页开发中的Retina显示技术,其中“@2x”和“@3x”分别指代在普通分辨率显示器和高分辨率显示器(比如Retina显示屏)上使用的图片资源。数字“2”和“3”通常表示图片的DPI(每英寸点数)倍数,意味着在屏幕上以更高的像素密度显示,以达到更好的视觉效果。 综合上述分析,可以总结以下知识点: 1. 网络图片获取的过程及其可能遇到的问题和技术要点。 2. PNG图片格式的技术特性和其在网页素材中的应用。 3. 网页素材下载的过程、途径和可能出现的问题。 4. Retina显示技术及其在图片资源命名中的应用。 5. 通过文件名称识别图片用途和显示需求。 以上就是从给定文件信息中提取的知识点,希望对解决网络图片获取、素材下载和素材管理等问题提供帮助。
recommend-type

【西门子PLC固件升级全攻略】:20分钟快速掌握固件更新流程

# 摘要 随着工业自动化的发展,可编程逻辑控制器(PLC)作为核心部件,其固件升级成为了提高系统性能、确保安全性和引入新功能的重要手段。本文详细介绍了PLC固件升级的整个过程,从准备工作、理论知识、实战操作到升级后的验证与维护,全面阐述了固件升级的关键步骤和注意事项。通过分析固件升级对系统性能的影响、检查硬件兼容性、准备合适的更新环境,本文旨在为工程师提供一套系统的固件升级指
recommend-type

Transformer做短期时序销量预测可行吗

<think>我们正在讨论Transformer模型在短期时间序列销量预测中的应用及效果评估。根据用户的问题,我们需要分析Transformer模型在短期销量预测中的可行性和效果。参考引用中提到了ARIMA模型和迭代方法(如DeepAR、DSSM、ConvTrans等),这些可以作为对比的基准。首先,Transformer模型最初是为自然语言处理设计的,但其自注意力机制能够捕捉序列中的长期依赖关系,因此也被应用于时间序列预测。在短期预测中,虽然传统方法(如ARIMA)可能因为简单而高效,但Transformer在处理非线性关系和多个相关时间序列方面可能更有优势。效果评估方面,我们可以参考引用[
recommend-type

华为SVN连接失败解决方案及SVNDrv驱动更新指南

标题中提到的是解决华为SVN连接不上问题的SVNDrv驱动文件压缩包,这里面涉及的知识点主要包括华为的SVN工具SecoClient、网络适配器配置、以及驱动文件的操作。下面将详细解释这些知识点: 1. SVN工具SecoClient: SecoClient是华为开发的一个客户端软件,用于连接和管理SVN服务器,SVN(Subversion)是一个开源的版本控制系统,广泛用于计算机软件的版本管理和代码控制。SecoClient作为客户端,一般需要安装在用户的电脑上,用来提交、更新、查看和管理源代码。 2. Win10上面连接不上的问题及返回码超时: 用户在使用SecoClient时遇到的连接不上问题,提示“接受返回码超时”,这通常是指客户端尝试与SVN服务器进行通信时,在设定的时间内没有得到有效的响应。返回码超时问题可能由多种原因导致,例如网络连接不稳定、防火墙设置、SVN服务器响应慢、或者是客户端与服务器之间的配置不正确。 3. 网络适配器配置: 网络适配器是电脑硬件中负责数据通信的部分。在本问题中,具体的操作为禁用网络适配器中的“SVN Adapter V1.0”,这一操作可能会影响到SecoClient的网络连接,特别是如果SVN Adapter是一个虚拟的网络适配器或者专门用于SecoClient连接的适配器时。 4. 驱动文件SVNDrv.sys的处理: 驱动文件(SVNDrv.sys)是操作系统用来控制硬件和软件资源的一个软件程序,对于SVN工具来说,这个驱动文件可能是用来协助SecoClient与网络适配器进行通信的。如果在连接SVN时遇到问题,解决方案中提到的删除旧的驱动文件并复制新的文件进去,可能是为了修复驱动文件损坏或更新驱动程序。 具体操作步骤为: - 打开“设备管理器”,找到网络适配器部分。 - 在列表中找到“SVN Adapter V1.0”,右键选择“禁用”。 - 导航到系统盘符下的“C:\Windows\System32\drivers”目录。 - 在该目录中找到并删除“SVNDrv.sys”文件。 - 将新下载的“SVNDrv.sys”文件复制到该目录下。 - 最后回到设备管理器,右键点击“SVN Adapter V1.0”,选择“启用”。 5. 标签中的知识点: - SecoClient:华为提供的用于连接和管理SVN服务器的客户端工具。 - SVNAdapter:可能指的是SecoClient在电脑上配置的一个虚拟网络适配器,用于连接到SVN服务器。 - 返回码超时:连接过程中出现的错误提示,表明在预定时间未能完成操作。 【压缩包子文件的文件名称列表】中的“解决华为SVN连接不上问题SVNDrv驱动文件.zip”则表明该压缩包内包含的是用于解决上述问题的相关文件,即新的SVNDrv.sys驱动文件。 综上所述,本知识点的详细解释不仅涵盖了与华为SecoClient工具相关的操作和配置,还包括了网络适配器和驱动文件的基本理解和处理方法。对于遇到类似问题的IT专业人士或普通用户来说,了解这些操作可以有效地解决SVN连接问题,确保软件开发和版本控制工作的顺利进行。
recommend-type

【西门子PLC新手必备手册】:一文掌握硬件安装与配置技巧

# 摘要 本文旨在全面介绍西门子PLC(可编程逻辑控制器)的相关知识与应用,包括硬件安装、配置实践、基础编程技巧、高级功能应用及系统维护与升级。首先,概述了PLC的基本概念与硬件组件,并详细讲解了硬件安装的理论与实践技巧。接着,深