我正在使用Crunchbase数据集。我有一份创建于1636年的哈佛大学的录取通知书。当我试图将字符串转换为DateTime时,此条目给了我一个错误。
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1636-09-08 00:00:00
我发现Panda从1677 开始支持时间戳
>>> pd.Timestamp.min
Timestamp('1677-09-21 00:12:43.145225')
我检查了一些解决方案,比如建议使用errors='coerce'
,但删除该条目/使其为null不是一个选项。你能提出处理这个问题的方法吗?
正如Henry在评论中提到的,pandas时间戳由于其在float64中的表示而受到限制,您可能可以在需要时使用datetime库解析日期时间,否则让它保持为字符串或将其转换为整数
场景1:如果您计划只在打印时显示此值
datetime_object = datetime.strptime('1636-09-08 00:00:00', '%Y-%m-%d %H:%M:%S')
场景2:如果你想把它作为一个日期列来保留数据帧中的信息,你可以另外使用
datetime_object.strftime("%Y%m%d%H%M%S")
在pandas数据帧中的列上使用它将产生这个
df=pd.DataFrame([['1636-09-08 00:00:00'],['1635-09-09 00:00:00']], columns=['dates'])
df['str_date']=df['dates'].apply(lambda x:datetime.strptime(x, '%Y-%m-%d %H:%M:%S'))
df.head()
日期