如何处理熊猫中超出时间戳范围的日期



我正在使用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()
日期01636-09-08 00:00:001636-09-08 00:00:001

最新更新