52.计算两个日期之间的间隔天数

李光朱课程 2024-05-02 02:48:02
案例导入

如下图,“身份证”列数据是身份证号,号码中第7-14字符表示出生日期。请根据身份证号计算所有人员的年龄,取整后添加到”年龄“列。输出修改后的表数据。添加代码注释。

图1.原始数据表

文心一言提示词

打开百度“文心一言”,输入提示词:“你是pandas专家,文件路径为:D:/Samples/身份证号.xlsx。该Excel文件的第一个工作表中A-C列为给定数据。用pandas导入Excel文件的数据,导入前8行数据,引擎为"openpyxl"。在导入的数据中,“身份证”列数据是身份证号,号码中第7-14字符表示出生日期。请根据身份证号计算所有人员的年龄,取整后添加到”年龄“列。输出修改后的表数据。添加代码注释。”

显示结果如下:

为了完成这个任务,我们将使用pandas库来读取Excel文件,并使用Python的日期和时间功能来计算年龄。以下是一个包含注释的Python脚本示例:

import pandas as pdfrom datetime import datetime, timedelta# 定义文件路径file_path = 'D:/Samples/身份证号.xlsx'# 使用pandas读取Excel文件,指定工作表为第一个(索引为0),使用openpyxl引擎,并限制读取前8行df = pd.read_excel(file_path, sheet_name=0, engine='openpyxl', nrows=8)# 假设身份证列的名称是'身份证'# 如果列名不同,请将下面的'身份证'替换为实际的列名id_card_column = '身份证'# 创建一个新的列'年龄'来存储计算出的年龄df['年龄'] = 0# 遍历身份证数据列,计算每个人的年龄for index, row in df.iterrows(): id_card_number = row[id_card_column] # 提取身份证中的出生日期部分(第7-14位) birth_date_str = id_card_number[6:14] # 转换为日期格式(假设身份证的日期格式是'YYMMDD') birth_date = datetime.strptime(birth_date_str, '%Y%m%d') # 计算年龄(取整) today = datetime.today() age = today.year - birth_date.year - ((today.month, today.day) < (birth_date.month, birth_date.day)) # 将年龄存储到DataFrame中 df.at[index, '年龄'] = age# 输出修改后的表数据print(df)# 如果需要,也可以将修改后的数据保存回Excel文件# df.to_excel('D:/Samples/身份证号_带年龄.xlsx', index=False, engine='openpyxl')

请注意,上述代码假设身份证中的日期格式是YYYYMMDD。此外,在计算年龄时,我们考虑了是否过了生日,以确保年龄计算的准确性。

如果身份证列的名称不是'身份证',请确保将id_card_column变量的值替换为实际的列名。同样,如果你需要将修改后的数据保存回Excel文件,可以取消注释最后一行代码,并指定保存的文件路径和文件名。

Python运行结果

图2.Python运行结果

本合集使用的工具如下:

文心一言:3.5版本

Python编辑器:3.9.0

申明:以上结果皆为实际运行结果,如遇到无法运行可在评论区留言。部分数据来自网络,如有侵权请私信告知,感谢!

0 阅读:1

李光朱课程

简介:感谢大家的关注