当尝试使用 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 条记录供参考:
错误:
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