将一年添加到一段时间?

Adding a year to a period?

我有一个已转换为日期时间的列:

df['date'] = pd.to_datetime(df['date'], errors='coerce')

date
2021-10-21 00:00:00
2021-10-24 00:00:00
2021-10-25 00:00:00
2021-10-26 00:00:00

我需要根据条件将这个时间加 1 年:

df.loc[df['quarter'] == "Q4_", 'date'] + pd.offsets.DateOffset(years=1)

但它不起作用....

date
2021-10-21 00:00:00
2021-10-24 00:00:00
2021-10-25 00:00:00
2021-10-26 00:00:00

我已经尝试将它转换为句点,因为我只需要在以后的连接中使用年份:

df['year'] = df['date'].dt.to_period('Y')

但是我不能在句点上添加任何数字。

这似乎对我有用:

import pandas as pd

df = pd.DataFrame({'date':pd.date_range('1/1/2021', periods=50, freq='M')})

print(df.head(24))

输入:

         date
0  2021-01-31
1  2021-02-28
2  2021-03-31
3  2021-04-30
4  2021-05-31
5  2021-06-30
6  2021-07-31
7  2021-08-31
8  2021-09-30
9  2021-10-31
10 2021-11-30
11 2021-12-31
12 2022-01-31
13 2022-02-28
14 2022-03-31
15 2022-04-30
16 2022-05-31
17 2022-06-30
18 2022-07-31
19 2022-08-31
20 2022-09-30
21 2022-10-31
22 2022-11-30
23 2022-12-31

添加,年份:

df.loc[df['date'].dt.quarter == 4, 'date'] += pd.offsets.DateOffset(years=1)

print(df.head(24))

请注意,按照您的逻辑,10 月份的年度增长。

输出:

         date
0  2021-01-31
1  2021-02-28
2  2021-03-31
3  2021-04-30
4  2021-05-31
5  2021-06-30
6  2021-07-31
7  2021-08-31
8  2021-09-30
9  2022-10-31
10 2022-11-30
11 2022-12-31
12 2022-01-31
13 2022-02-28
14 2022-03-31
15 2022-04-30
16 2022-05-31
17 2022-06-30
18 2022-07-31
19 2022-08-31
20 2022-09-30
21 2023-10-31
22 2023-11-30
23 2023-12-31