首页 > 编程问答 >pd.to_datetime() 不适用于旧日期

pd.to_datetime() 不适用于旧日期

时间:2024-07-22 04:57:07浏览次数:18  
标签:python pandas dataframe datetime python-datetime

当尝试使用 pd.to_datetime() 转换 pandas DataFrame 的“Date”字段时,仅当日期在 1700 年之前时,我才会收到“OutOfBoundsDatetime”错误(否则转换工作正常)。有帮助吗?

df = pd.read_excel('Timeline_SecondMillenialH2.xlsx')
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')

Excel 文件的前 2 条记录供参考:

First 2 records of the Excel file for reference

错误:

OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1516-01-01 00:00:00

你遇到的错误是因为 Pandas 默认使用 datetime64[ns] 数据类型,它支持的时间范围有限(大约在 1677 年到 2262 年之间)。你的 Excel 文件包含早于此范围的日期,因此会出现 OutOfBoundsDatetime 错误。

解决此问题的方法是使用 to_datetime() 函数的 errors 参数,将其设置为 'coerce' 。这将把超出范围的日期转换为 NaT (Not a Time),让你可以继续处理数据。

以下是修改后的代码:

df = pd.read_excel('Timeline_SecondMillenialH2.xlsx')
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d', errors='coerce')

替代方法:

如果你需要对这些早于 1677 年的日期进行计算或分析,可以使用 datetime 模块来处理它们。你可以在将数据加载到 Pandas DataFrame 之后,将日期字符串转换为 datetime.datetime 对象。

import datetime

df = pd.read_excel('Timeline_SecondMillenialH2.xlsx')
df['Date'] = df['Date'].apply(lambda x: datetime.datetime.strptime(x, '%Y-%m-%d'))

请注意,使用 datetime.datetime 对象可能会影响性能,因为 Pandas 无法像使用 datetime64[ns] 数据类型那样对其进行优化。

希望这有帮助!

标签:python,pandas,dataframe,datetime,python-datetime
From: 78776334

相关文章

  • 如何立即取消使用 Ollama Python 库生成答案的 Asyncio 任务?
    我正在使用Ollama通过OllamaPythonAPI从大型语言模型(LLM)生成答案。我想通过单击停止按钮取消响应生成。问题在于,只有当响应生成已经开始打印时,任务取消才会起作用。如果任务仍在处理并准备打印,则取消不起作用,并且无论如何都会打印响应。更具体地说,即使单击按钮后,此函数......
  • 使用 np.array 索引过滤 Python 列表
    谁能向我解释一下列表self.data如何使用numpy索引数组selec_idx进行索引/过滤?完整的课程可在https://github.com/kaidic/LDAM-DRW/blob/master/imbalance_cifar.pydefgen_imbalanced_data(self,img_num_per_cls):new_data=[]n......
  • 尝试在cmd(python)中安装turtle
    当我在cmd中编写pipinstallturtle后,这条消息出现在我面前。有人知道该怎么办吗?C:\>pipinstallturtleCollectingturtleUsingcachedturtle-0.0.2.tar.gz(11kB)ERROR:Commanderroredoutwithexitstatus1:command:'C:\Users\Bruger\App......
  • Python + Polars:如何有效地“fill_null”仅 DataFrame 的某些列?
    例如,假设我只想fill_null(strategy="zero")DataFrame的数字列。我当前的策略是这样做:final_df=df.select(cs.exclude(cs.numeric()))final_df.with_columns(df.select(cs.numeric()).fill_null(strategy="zero"))是否有替代的、更惯用或更有效的方法来实现我......
  • 如何将 geopandas 数据框与底图重叠?
    我有一个shapefile,我将其读取为geopandas数据框importgeopandasasgpdgdf=gpd.read_file('myfile.shp')gdf.plot()其中gdf.crs<ProjectedCRS:ESRI:54009>Name:World_MollweideAxisInfo[cartesian]:-E[east]:Easting(metre)-......
  • 如何找到 Windows 上 Python 的安装位置?
    我想找出我的Python在Windows上的安装路径。例如:C:\Python25如何找到Python的安装位置?在Windows上查找Python安装位置的方法有很多种:1.使用where命令(推荐方法):打开命令提示符(cmd)。输入以下命令并按回车键:wherepython......
  • Python Pandas:如何解析没有行结尾的 CSV
    如何解析没有行结尾的CSV文件?示例数据sep=;Id;Date;1;1980-02-29;2;1980-03-10;3;;可以使用lineterminator参数指定行终止符来解析没有行尾的CSV文件。在这种情况下,你可以将lineterminator设置为一个空字符串('')。以下是使用......
  • Python 中的 azure.ai.translation.document - 无法使用当前权限访问源文档位置
    我在使用Python中的azure.ai.translation.document库时遇到问题。我已经在Azure中设置了翻译服务以及带有两个容器的Blob存储。我已使用“用户委托密钥”创建了SAS连接。一种用于源(读取/列表),一种用于目标(写入/列表)。例如我尝试运行Python程序,但源b......
  • 博文标题:探索Python中的元编程:装饰器的魔法
    引言在Python的世界里,装饰器(Decorators)是一种非常强大的特性,它允许程序员在不修改原始函数代码的情况下,为函数添加新的功能。这种机制不仅增强了代码的可读性和可维护性,还提供了高度的灵活性和扩展性。本文将深入探讨装饰器的基本概念、工作原理以及如何利用它们来简化和......
  • rabbitmq发送消息localdatetime报错:Java 8 date/time type `java.time.LocalDateTime`
    两种解决方案:通过全局配置LocalDateTime的序列化/***json序列化增强解决Jackson序列化不了Java8日期*/@BeanpublicMessageConvertermessageConverter(){ObjectMapperom=newObjectMapper();om.setVisibility(PropertyAccessor.ALL,JsonAut......