如何将DataFrame中字符串日期列转为时间戳并计算日期间差值
修复方案
错误原因
报错是因为date1、date2两列当前为字符串类型,Python不支持直接对字符串做减法运算计算日期差。
转换日期列为时间戳格式
有两种常用转换方式:
- 读取数据时直接转换
如果是从csv等文件读取生成DataFrame,可通过parse_dates参数直接指定要解析为日期的列,无需后续手动转换:
import pandas as pd df = pd.read_csv("你的文件路径.csv", parse_dates=["date1", "date2"])
- 对已有DataFrame手动转换
使用pd.to_datetime()方法单独转换两个日期列:
df["date1"] = pd.to_datetime(df["date1"]) df["date2"] = pd.to_datetime(df["date2"])
提示:如果你的日期是特殊自定义格式,可以添加
format参数提升转换效率、避免识别错误,示例:df["date1"] = pd.to_datetime(df["date1"], format="%Y-%m-%d")
计算日期差生成day列
日期格式转换完成后即可直接做减法运算,若需要提取纯数字格式的天数,可调用.dt.days属性:
# 生成timedelta类型的时间差列 df["day"] = df["date2"] - df["date1"] # 生成纯数字格式的天数列 df["day"] = (df["date2"] - df["date1"]).dt.days
运行结果示例
对你提供的测试数据执行以上代码后,输出结果如下:
date1 date2 day 0 2021-11-02 2021-11-02 0 1 2021-11-02 2021-11-03 1 2 2021-11-02 2021-11-07 5
内容的提问来源于stack exchange,提问作者skulldoger
相关产品推荐
相关产品推荐

