如何计算日期时间pandas列中距离特定日期还剩下的月数?

2024-10-03 02:37:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将“日期”列中的所有日期都替换为01(每月的第一天),并为数据框中的每个值计算到某个特定日期前的剩余月份。你知道吗

我的数据帧如下所示:

Date
2019-02-10
2017-03-02
2018-02-03

我的约会对象是2019-10-31。我想知道这两个日期之间有多少个月,并生成一个包含月数的列。你知道吗

我试过几天了,但都没用。你知道吗

对于月份计算,我在原始日期的基础上加上一个月(计算需要),生成结束日期(结束)并简单地减去它们。你知道吗

dfA.loc[dfA.day > 1, 'DepreDate'] = dfA.date + pd.DateOffset(months=1)

closing = date(today.year, 10, 31)

time_to = abs(dfA.DepreDate - closing)

但我得到了一个错误:

unsupported operand type(s) for -: 'DatetimeIndex' and 'datetime.date'

编辑(已解决):Ankur Sinha通过添加:

dfA['First_Date_Month'] = dfA['date'] + pd.offsets.MonthBegin(1)
dfA['Time_Left_In_Months'] = dfA['Closing'].dt.month - dfA['First_Date_Month'].dt.month

按年度增加12个月:

dfA.loc[dfA["First_Date_Month"].dt.year == 2018,'Time_Left_In_Months'] = dfA["Time_Left_In_Months"] + 12

Tags: 数据indatetimedtleftlocfirst
1条回答
网友
1楼 · 发布于 2024-10-03 02:37:46

如果我理解正确,你有:

        Date     Target
0 2019-02-10 2019-10-31
1 2017-03-02 2019-10-31
2 2018-02-03 2019-10-31

要从原始日期的第一个日期开始添加一个月:

df['First_Date_Month'] = df['Date'] + pd.offsets.MonthBegin(1)

现在找出两个日期之间的月份:

df['Time_Left_In_Months'] = ((df['Target'] - df['First_Date_Month'])/np.timedelta64(1, 'M')).astype(int)

输出:

        Date     Target First_Date_Month  Time_Left_In_Months
0 2019-02-10 2019-10-31       2019-03-01                    8
1 2017-03-02 2019-10-31       2017-04-01                   30
2 2018-02-03 2019-10-31       2018-03-01                   20

相关问题 更多 >