问题描述
我有这个数据框,如下所示
我需要创建一个从 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