python - Python:从 Pandas 的周数和年份计算一周的开始日期和结束日期
问题描述
我用代码创建了下表
newdf['Year_Date'] = pd.DatetimeIndex(newdf['AbsenceBegDate']).year
newdf['Week_Number'] = pd.DatetimeIndex(newdf['AbsenceBegDate']).week
newdf.drop('AbsenceBegDate', axis=1, inplace=True)
新文件:
Emp_ID Year_Date Week_Number Salary Hours_Worked
5500 2019 30 300 30
3300 2019 31 350 31
3300 2019 32 400 35
我需要从周数和年份添加该周的两列开始日期和结束日期
例如,
Emp_ID Year_Date Week_Number Salary Hours_Worked Start_Date End_Date
5500 2019 30 300 30 07/25/2019 07/31/2019
3300 2019 31 350 31 08/01/2019 08/07/2019
3300 2019 32 400 35 08/08/2019 08/15/2019
你能告诉我如何提取这个开始日期和结束日期。感谢您的帮助
解决方案
您可以创建一个函数来执行此操作:首先定义从哪里开始。例如,以下是您将今天作为开始日期要做的事情,您当然可以根据自己的需要进行调整:
today = date.today()
Week = today.isocalendar()[1]
pastWeek = Week-1
year = 2020
然后定义这个函数:
def get_dates(year, week):
d = date(year,1,1)
if(d.weekday()<= 3):
d = d - timedelta(d.weekday())
else:
d = d + timedelta(7-d.weekday())
dlt = timedelta(days = (week-1)*7)
return d + dlt, d + dlt + timedelta(days=6)
这样做之后:
X = get_dates(year, (pastWeek-1) )
这为您提供了足够的信息来完成这项工作:
Startdate = str(X[0])
Enddate = str(X[1])
StartdateNew = pd.to_datetime(Startdate).date()
EnddateNew = pd.to_datetime(Enddate).date()
StartdateNew2 = StartdateNew.strftime('%Y%m%d')
EnddateNew2 = EnddateNew.strftime('%Y%m%d')
推荐阅读
- javascript - 如何在父跨度内放置无序列表,我的跳到下一行而不是向下流动
- apache-camel - Camel FTP 从本地 Apache FtpServer 传输 15.6 MiB 文本文件耗时 57 分钟
- git - 在没有打开编辑器窗口的情况下修改 Mercurial 提交?
- php - 我看不到使用 Laravel 的视图
- autohotkey - Autohotkey:将全屏图像从 1080p 调整为 4k 显示?
- amazon-web-services - 无服务器框架 AWS 细粒度访问控制
- arrays - 如何从 Powershell 中的值数组创建文本文件
- java - 如何转换流
流式传输 ? - vim - 使用自动命令 BufNewFile 时未加载 Vim 颜色方案
- parsing - 如何在解释器中处理赋值和变量语法