如何解决Python中NaTType不支持strftime的错误?
解决NaTType不支持strftime的报错问题
当你的DataFrame中'Date'列存在空值时,直接用apply+strftime会因为空值转成NaT后无法调用strftime而报错,下面是两种简单的解决方式:
方法一:使用向量化的dt.strftime(推荐)
先将整列转换为datetime类型,再用dt.strftime处理,这个方法会自动忽略NaT值,无需手动判断:
df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%Y/%m/%d')
处理后原空值对应的位置会变成NaN,如果需要保留空字符串,可以再加一步替换:
df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%Y/%m/%d').fillna('')
方法二:在lambda中添加空值判断
如果一定要用apply,可以在lambda里先检查是否为有效日期,再执行格式化:
df['Date'] = df['Date'].apply( lambda x: pd.to_datetime(x).strftime('%Y/%m/%d') if pd.notna(x) else '' )
这里如果原空值是NaN或空字符串,pd.notna(x)会返回False,直接返回空字符串(你也可以改成pd.NaT或其他你需要的默认值)。
内容的提问来源于stack exchange,提问作者Jed
相关产品推荐
相关产品推荐

