我想将日期列中的所有天数替换为 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)
但我收到错误:
- 不支持的操作数类型:“DatetimeIndex”和“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
如果我理解正确,你有这个:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句