日期列从 11 月开始

问题描述

我有这个数据框,如下所示

我需要创建一个从 11 月开始的新列,所以在 1950/11 年我需要有 1951 年和第 1 个月,依此类推...

        Data    Year  Month 
0   1950-01-01  1950    1   
1   1950-01-02  1950    1   
2   1950-01-03  1950    1   
3   1950-01-04  1950    1   
4   1950-01-05  1950    1   
5   1950-01-06  1950    1   
6   1950-01-07  1950    1   
7   1950-01-08  1950    1   
....
24436   2016-11-26  2016    11  

我试图创建一个只有年份的新列,我已经设法做到了,但我现在不知道如何创建新的月份列

预期结果(对于日期列):

       Year  Month  Year2   Month2
    1950    11      1951     1
    1950    12      1951     2
    1951    1       1951     3
    1951    2       1951     4
    1951    3       1951     5
    1951    4       1951     6
    1951    5       1951     7  
    1951    6       1951     8
    1951    7       1951     9
    1951    8       1951     10
    1951    9       1951     11
    1951    10      1951     12
    1951    11      1952     1
    1951    12      1952     2
    1952    1       1952     3
(...)

解决方法

假设你有这个数据框:

    Year  Month
0   1950     10
1   1950     11
2   1950     12
3   1951      1
4   1951      2
5   1951      3
6   1951      4
7   1951      5
8   1951      6
9   1951      7
10  1951      8
11  1951      9
12  1951     10
13  1951     11
14  1951     12
15  1952      1

然后你可以这样做:

df["Year2"] = df["Year"].iat[0] + (df["Month"] == 11).cumsum()
df["Month2"] = (df["Month"] + 1) % 12 + 1

print(df)

打印:

    Year  Month  Year2  Month2
0   1950     10   1950      12
1   1950     11   1951       1
2   1950     12   1951       2
3   1951      1   1951       3
4   1951      2   1951       4
5   1951      3   1951       5
6   1951      4   1951       6
7   1951      5   1951       7
8   1951      6   1951       8
9   1951      7   1951       9
10  1951      8   1951      10
11  1951      9   1951      11
12  1951     10   1951      12
13  1951     11   1952       1
14  1951     12   1952       2
15  1952      1   1952       3