我正在使用包含下一列的数据框架
DATE Months New_Date
2020-07-03 1 2020-08-01
2022-05-06 6 2022-11-01
2020-06-23 4 2020-10-01
我需要将列'months'中的值(months)添加到列date中,并获得一个新的日期。我一直在研究并找到一些这样的解决方案
self.df['New_Date'] = (
self.df["DATE"].values.astype("datetime64[M]")
+ self.df["Months"].values.astype("timedelta64[M]")
)
但是正如你所看到的,我得到了正确的月份,但是日期是那个月的第一天,而不是日期的第一天。
我试着不使用apply &抵消或应用&因为我认为我的脚本的效率不会很好。所以我想知道是否存在一种方法来使用relativedelta或offset不使用应用(可能矢量化,但我不知道如何),或者如果你知道一个不同的方法来获得正确的结果。
提前感谢,我真的很感谢你的帮助!
您可能正在寻找:
df['DATE'] = pd.to_datetime(df['DATE'])
tdf = np.vectorize(lambda x:np.timedelta64(x,'M'))
df['NewDate'] = (df['DATE'] + tf(df['Months'])).dt.date