python - 如何将工作日中的整数列添加/减去日期时间列?
问题描述
我的数据框如下所示:
ID | 节假日 | 假期第一天 |
---|---|---|
A01 | 3 | 16/03/2021 |
B01 | 10 | 2021 年 3 月 24 日 |
C02 | 3 | 2021 年 3 月 31 日 |
D03 | 2 | 2021 年 2 月 4 日 |
我试图找出一种方法来创建另一列“假期返回的第一天”。
我尝试使用如下所示的 iterrow 循环 DF(上面的 DF 是“日历”):
for i, r in Calendar.iterrows():\
Calendar["First Day of Return from holiday"] = Calendar["First Day of Holiday"] + pd.tseries.offsets.BDay(n = r["Days of Holiday"])
而且我没有得到正确的输出。
你还有什么方法可以推荐给我吗?
基本上,寻找在工作日内将整数列添加/减去同一行的日期时间列的方法。
万分感谢!
解决方案
首先,我们将假期日期的第一天转换为datetime
数据类型,将假期数转换为int
数据类型,然后我们以零开始新列。我们可以使用 BDay 函数迭代并将值分配给新列的每一行以获取工作日。然后我们可以将日期转换回我们需要的日期格式。
但是,日期将被转换为标准格式,该格式可以使用转换回所需的格式.dt.strftime('%d/%m/%Y')
import pandas as pd
from pandas.tseries.offsets import BDay
df['First Day of Holiday'] = pd.to_datetime(df['First Day of Holiday'])
df['Days of Holiday'] = df['Days of Holiday'].astype('int')
df['First Day of Return from holiday'] = [0]*len(df.index)
for i, r in df.iterrows():
df.loc[i, 'First Day of Return from holiday'] = r['First Day of Holiday'] + BDay(n=r['Days of Holiday'])
df['First Day of Holiday'] = df['First Day of Holiday'].dt.strftime('%d/%m/%Y')
df['First Day of Return from holiday'] = pd.to_datetime(df['First Day of Return from holiday'])
df['First Day of Return from holiday'] = df['First Day of Return from holiday'].dt.strftime('%d/%m/%Y')
df
输出
推荐阅读
- html - CSS中的线性渐变
- android - 只有在firebase完成在android中上传文件后,我才能按顺序执行代码
- algolia - 无法在我的 docusaurus v2 网站中运行 Algolia Docsearch
- python - 将新变量添加到 cds 工具箱中的数据对象
- ios - 如何使图像像地图一样(缩放/平移/地图标记)?
- c++ - 将指针传递给模板类的模板成员
- python - Comparing different data structures for a problem, which one is the best?
- c++ - ESP8266 WiFi 管理器和调制解调器睡眠
- asp.net-core - AspNetCore.Reporting not working on linux machine?
- c++ - OpenSpliceConfig.cmake or opensplice-config.cmake not found while building dds-tutorial-cpp-ex