首页 > 解决方案 > Python数据框日期加上来自另一列的月份变量

问题描述

在此处输入图像描述

我有一个带有 date 和 month_diff 变量的数据框。我想根据以下逻辑得到一个新的日期(命名为 Target_Date):例如日期是 2/13/2019,month_diff 是 3,那么目标日期应该是原始日期的月末再加上 3 个月,即 2019 年 5 月 31 日

我尝试了以下方法首先获取 traget 日期:

df["Target_Date"] = df["Date"] + pd.DateOffset(months = df["month_diff"])

但它失败了,据我所知,dateoffset 中的参数应该是一个变量或一个固定数字。

我也试过:

df["Target_Date"] = df["Date"] + relativedelta(months = df["month_diff"])

它也失败了。

任何人都可以帮忙吗?谢谢你。

编辑:这是一个拥有数百万行的大型数据集。

标签: pythondataframedatetimerelativedelta

解决方案


你可以试试这个

import pandas as pd
from dateutil.relativedelta import relativedelta
df = pd.DataFrame({'Date': [pd.datetime(2019,1,1), pd.datetime(2019,2,1)], 'month_diff': [1,2]})
df.apply(lambda row: row.Date + relativedelta(months=row.month_diff), axis=1)

或列表理解

[date + relativedelta(months=month_diff) for date, month_diff in df[['Date', 'month_diff']].values]

推荐阅读