计算熊猫dataframe的开始值以来经过的月份

发布于 2025-01-19 12:08:32 字数 383 浏览 3 评论 0原文

我有一个看起来像这样的数据框,

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]}

应该这样做? 我的开始月是12/2021或12/31/2021(不在乎这里的日期,我只关心过去的月份)。这是经济方案数据,但是源数据的格式并不是我们需要的方式。

I have a dataframe that looks as such

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]}

I want to calculate a months elapsed columns which should look like this

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

how can I do this?
my starting month would be 12/2021 or 12/31/2021 (do not care about dates here I only care about the months elapsed). This is economic scenario data but the format of the source data is not in the way we need it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

じее 2025-01-26 12:08:32

国际大学学院:

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

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
作妖 2025-01-26 12:08:32

我基本上做了上述方法,但采用了许多步骤。没有使用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

I basically did the above method but in numerous steps. Did not use diff() , sum() and cumsum() functions.

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文