如果我说错了,请原谅,当数据为null或空时会发生AFAIK ValueError: NaTType does not support strftime
,但我的数据不是。
假设我有这个 Dataframe 。
df = pd.DataFrame({'personnel_number': ['123', '345', '567', '789', '000', '4444'],
'expiry_date': ['2020-12-07', '2099-12-04', '2019-08-30', '2022-03-19', '2020-09-06', '9999-12-31']})
我想用下面的代码把它转换成日期类型格式。
for exp_date in df['expiry_date']:
date = pd.to_datetime(exp_date, errors='coerce').strftime('%Y-%m-%d')
print(date)
但不知何故,当循环到达最后一个数据(“9999-12-31”日期数据)时,我总是得到这个错误。
ValueError: NaTType does not support strftime
我想9999年听起来不太合理,但这是我拥有的数据,我不能改变它。那么,我能做什么呢?
2条答案
按热度按时间nvbavucw1#
我认为这里的循环是不必要的,使用
pd.to_datetime
与列,然后Series.dt.strftime
:错误原因是参数
errors='coerce'
为'wrong'
日期时间创建了缺失值NaT
,因为此处超出了时间戳限制:zrfyljdw2#
进口Pandas当PD
日期= www.example.com日期时间(表达式日期,错误="强制").字符串时间(" %Y- % m- % d")pd.to_datetime(exp_date, errors='coerce').strftime('%Y-%m-%d')
而且,你可以做的是:
日期= www.example.com日期时间(表达式日期,格式=" %Y- % m- % d",错误="强制")pd.to_datetime(exp_date, format ='%Y-%m-%d', errors='coerce')