Python datetime处理DataFrame日期减法:解决90天前列生成报错问题
解决方法
首先得确保你的start_Date列是datetime类型,如果当前是字符串格式,先做类型转换:
import pandas as pd # 转换日期列类型(若还不是datetime格式) df['start_Date'] = pd.to_datetime(df['start_Date'])
然后用pd.Timedelta实现日期往前推90天:
# 生成datetime类型的prior列 df['prior'] = df['start_Date'] - pd.Timedelta(days=90)
如果需要把结果转成YYYY-MM-DD这类指定格式的字符串,就用.dt.strftime()方法:
# 生成字符串格式的prior列 df['prior'] = (df['start_Date'] - pd.Timedelta(days=90)).dt.strftime('%Y-%m-%d')
你的两种方法出错原因:
- 方法一:
df['start_Date'] - 90直接减整数无效,pandas的datetime系列只能和时间间隔对象(比如pd.Timedelta)做运算,不能直接减整数。 - 方法二:存在语法错误(
df['start_Date')]括号不匹配),另外对pandas的Series不能直接调用strftime(),必须通过.dt访问器调用日期相关方法,同时你写的dt应该是pd.Timedelta或datetime.timedelta,否则会触发类型错误。
内容的提问来源于stack exchange,提问作者Coding_Nubie
相关产品推荐
相关产品推荐

