给定一个日期或时间作为起始值,再指定一个日期或时间间隔,即偏移,计算最终日期或时间。这个日期间隔,可以是普通的日期,也可以是工作日。
日期时间偏移
【问题描述】
指定一个起始日期或时间,再指定一个日期或时间长度作为偏移,计算终止日期或时间。
【示例7-7】
本例使用的Excel文件的完整路径为“D:/Samples/ch07/02 日期时间偏移计算/时间序列.xlsx”。该文件打开后如图7-2所示,利用“生产日期”列和“保质期”列计算每种食品的过期日期。
图7-2 计算食品的过期日期
- ChatGPT提示词模板
新建ChatGPT会话,在提问文本框中输入下面的提示词:
prompt
你是pandas专家,文件路径为:D:/Samples/ch07/02 日期时间偏移计算/时间序列.xlsx。该Excel文件的第一个工作表中A-C列为给定数据,A-C列分别为“食品名称”、“生产日期”和“保质期”。用pandas导入Excel文件的数据,导入前3行,前3列数据,引擎为"openpyxl"。在导入的数据中,利用“生产日期”列和“保质期”列计算每种食品的过期日期,添加到“过期日期”列。注意,保质期数据的单位为月。输出修改后的表数据。添加代码注释。
2. 代码
- 根据提示词得到类似下面的代码:
code.python
import pandas as pd
# 读取Excel文件中的第一个工作表,前3行,前3列数据
df = pd.read_excel(
'D:/Samples/13 日期时间数据的整理/时间段/已知起始日期和间隔天数计算终止日期/食品的过期日期.xlsx',
sheet_name=0,
usecols='A:C',
nrows=3,
engine='openpyxl'
)
# 计算每种食品的过期日期并添加到“过期日期”列
df['过期日期'] = df.apply(lambda x: x.生产日期 + pd.DateOffset(months=x.保质期), axis=1)
# 输出修改后的表数据
print(df)
3. 使用代码
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出添加过期日期的数据。
code.python
>>> == RESTART: D:/Samples/1.py =
食品名称 生产日期 保质期 过期日期
0 速冻饺子 2023-03-12 3 2023-06-12
1 速冻包子 2023-02-25 6 2023-08-25
2 速冻馄饨 2023-04-20 2 2023-06-20
【知识点扩展】
本例用pandas的DateOffset函数计算过期日期,指定该函数的months参数的值为保质期,得到偏移值,加上生产日期就得到过期日期。
工作日偏移
【问题描述】
指定日期偏移为工作日的情况。
【示例7-8】
本例使用的Excel文件的完整路径为“D:/Samples/ch07/02 日期时间偏移计算/工作日.xlsx”。该文件打开后如图7-3所示,请利用“办证日期”列数据计算取证日期。
图7-3 计算食品的过期日期
- ChatGPT提示词模板
新建ChatGPT会话,在提问文本框中输入下面的提示词:
prompt
你是pandas专家,文件路径为:D:/Samples/ch07/02 日期时间偏移计算/工作日.xlsx。该Excel文件的第一个工作表中A-B列为给定数据,A-B列分别为“姓名”和“办证日期”。用pandas导入Excel文件的数据,导入前7行,前2列数据,引擎为"openpyxl"。办证时间为10个工作日,请利用“办证日期”列数据计算取证日期,并添加到“取证日期”列。输出修改后的表数据。添加代码注释。
2. 代码
- 根据提示词得到类似下面的代码:
code.python
import pandas as pd
# 读取 Excel 文件中的数据,选择第一个工作表,前七行和前两列,引擎为 openpyxl
df = pd.read_excel('D:/Samples/ch07/02 日期时间偏移计算/工作日.xlsx',
sheet_name=0,
nrows=7,
usecols="A:B",
engine="openpyxl")
# 根据“办证日期”列数据计算取证日期,办证时间为 10 个工作日,并将结果添加到“取证日期”列
df["取证日期"] = df["办证日期"] + pd.offsets.BDay(10)
# 输出修改后的表数据
print(df)
3. 使用代码
打开Python IDLE,新建一个脚本文件,将上面生成的代码复制进去,保存到D:/Samples/1.py。运行脚本,在IDLE Shell窗口输出添加取证日期的数据。
code.python
>>> == RESTART: D:/Samples/1.py =
姓名 办证日期 取证日期
6 王晓晓 2023-01-12 2023-01-26
6 公孙磊 2023-01-14 2023-01-27
2 欧阳旭 2023-01-16 2023-01-30
3 单勇 2023-01-19 2023-02-02
4 赵琳 2023-01-22 2023-02-03
5 李迅雷 2023-02-01 2023-02-15
6 党春 2023-02-09 2023-02-23
【知识点扩展】
pandas中用OffSets对象的BDay方法得到指定工作日天数的偏移值。