计算自pandas数据帧中的开始值以来经过的月份



我有一个看起来像的数据帧

df = {'CAL_YEAR':[2021,2022,2022,2022,2022,2022,2022,2022,2022,2022,2022,2022,2022,2023,2023]
'CAL_MONTH' :[12,1,2,3,4,5,6,7,8,9,10,11,12,1,2]}

我想计算一个月过去的列,它应该看起来像这个

df = {'CUM_MONTH':[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}

我该怎么做?我的开始月份是2021年12月12日或2021年12日31日(这里不在乎日期,我只在乎过去的月份(。这是经济情景数据,但源数据的格式不符合我们的需要

IIUC:

multiplier = {'CAL_YEAR': 12, 'CAL_MONTH': 1}
df.assign(
CUM_MONTH=df[multiplier].diff().mul(multiplier).sum(axis=1).cumsum()
)
CAL_YEAR  CAL_MONTH  CUM_MONTH
0       2021         12        0.0
1       2022          1        1.0
2       2022          2        2.0
3       2022          3        3.0
4       2022          4        4.0
5       2022          5        5.0
6       2022          6        6.0
7       2022          7        7.0
8       2022          8        8.0
9       2022          9        9.0
10      2022         10       10.0
11      2022         11       11.0
12      2022         12       12.0
13      2023          1       13.0
14      2023          2       14.0

我基本上完成了上面的方法,但步骤很多。未使用diff((、sum((和cumsum(((函数。

start_year = int(data["VALUATION_DATE"][0][-4:])
data = data.astype({"CAL_YEAR": "int","CAL_MONTH": "int"})
data["CAL_YEAR_ELAPSED"] = data["CAL_YEAR"]  -  (start_year+1)
data["CumMonths"] = data["CAL_MONTH"] + 12 * data["CAL_YEAR_ELAPSED"] +1

相关内容

最新更新