如何用Python计算CSV文件中两个日期的天数差?
问题解决:计算日期差的整数天数
你的代码存在几个关键问题,导致无法正确获取天数:
- 错误遍历DataFrame:
for row in df遍历的是列名而非数据行,且完全没必要用循环——pandas支持向量化操作,直接对整列计算更高效。 - 错误调用天数属性:pandas的时间差序列(TimedeltaSeries)需通过
.dt.days获取天数,而非.datetime.days。 - 重复取整列数据:循环中每次都取整个
df["PasswordLastSet"]而非单条数据,会导致类型不匹配报错。
修正后的代码
import pandas as pd from datetime import datetime # 读取CSV并解析日期列 df = pd.read_csv("serv.csv", parse_dates=["PasswordLastSet"]) # 获取当前日期(转为pandas Timestamp类型) current_date = pd.to_datetime(datetime.today()) # 直接对整列计算日期差 delta = current_date - df["PasswordLastSet"] # 获取整数天数,得到可直接用于运算的int类型Series df["DaysSinceLastSet"] = delta.dt.days # 查看结果示例 print(df[["PasswordLastSet", "DaysSinceLastSet"]])
关键说明
- 无需循环:pandas会自动对整列的每个元素执行日期差计算,效率远高于逐行循环。
.dt.days:这是pandas针对时间差序列的专属属性,返回每个时间差对应的整数天数,结果为int64类型,可直接用于后续数学运算。- 结果存储:将计算出的天数存入DataFrame新列,方便后续代码调用。
内容的提问来源于stack exchange,提问作者Caio Mallmann
相关产品推荐
相关产品推荐

