我想在熊猫中添加几个月的时间。它们可能会超过2262年。有相对较少的解决方案:
import numpy as np
import pandas as pd
pd.Timestamp('2018-01-22 00:00:00') + np.timedelta64(12, 'M')
这将导致
Timestamp('2019-01-22 05:49:12')
但是,当我增加较大的数字(结果是超过2262年)时:
pd.Timestamp('2018-01-22 00:00:00') + np.timedelta64(3650, 'M')
Python确实返回结果:
Timestamp('1737-09-02 14:40:26.290448384')
如何应对?
答案 0 :(得分:0)
datetime
Pandas.Timestamp旨在处理更精细的时间分辨率,直至纳秒。此精度占用分配给它的64位中的足够多,因此只能达到2262年。但是,datetime.datetime
没有此限制,可以达到9999
年。如果您开始使用datetime
对象而不是Timestamp
对象,则将失去一些功能,但将可以超越2262
。
此外,您的月份数也超出了Timedelta
让我们从选择一个更合理的月数开始,该月数是48(四年)的整数倍。
d = pd.Timedelta(48, 'M')
还有我们的约会
t = pd.Timestamp('2018-01-22')
一个倍数,表示我们的48个月适合期望的3650个月的次数。
m = 3650 / 48
然后我们可以使用to_pydatetime
和to_pytimedelta
t.to_pydatetime() + d.to_pytimedelta() * m
datetime.datetime(2322, 3, 24, 14, 15, 0, 1)