使用Pandas计算DataFrame日期与今日的天数差及报错解决
问题分析与解决方法
核心错误点:
- 直接对文本格式的
date列调用.dt.strftime():.dt访问器仅支持datetime类型的列,文本列用它会直接触发AttributeError。 - 类型转换逻辑混乱:你尝试转日期后仍沿用错误代码,要么没真正完成datetime转换,要么转换后又用
strftime把列转回了字符串,导致后续计算时df.date还是字符串类型,触发TypeError(Timestamp和字符串无法直接相减)。
正确写法
分两步完成:先将文本列转为datetime类型,再计算天数差:
# 第一步:把文本格式的date列转换为datetime类型 df['date'] = pd.to_datetime(df['date']) # 第二步:计算每行日期与今日的天数差 df['days_diff_from_today'] = (pd.to_datetime('today') - df['date']).dt.days
补充优化方案
- 若
date列存在无效日期格式,可添加errors='coerce'参数将无效值转为NaT(缺失的datetime类型值):df['date'] = pd.to_datetime(df['date'], errors='coerce') - 如需保留原文本格式的
date列,可新建datetime类型列用于计算,不修改原列:df['date_datetime'] = pd.to_datetime(df['date']) df['days_diff_from_today'] = (pd.to_datetime('today') - df['date_datetime']).dt.days
内容的提问来源于stack exchange,提问作者Sash9
相关产品推荐
相关产品推荐

