我正在寻找日历周的确切年份:
data = {'Date': ['31.12.2022','01.01.2023','02.01.2023','31.12.2023','01.01.2024','02.01.2024','31.12.2024','01.01.2025','02.01.2025']}
df = pd.DataFrame(data)
df['Date'] = pd.to_datetime(df['Date'], format="%d.%m.%Y")
df['Week'] = df['Date'].dt.isocalendar().week
df['YearWeek'] = df['Date'].dt.strftime('%y%V')
df['Year'] = df['Date'].dt.year
df['Year_1'] = (df['Date']+pd.to_timedelta(6-df['Date'].dt.weekday, unit='d')).dt.year
df结果:
Date Week YearWeek Year Year_1
0 2022-12-31 52 2252 2022 2023
1 2023-01-01 52 2352 2023 2023
2 2023-01-02 1 2301 2023 2023
3 2023-12-31 52 2352 2023 2023
4 2024-01-01 1 2401 2024 2024
5 2024-01-02 1 2401 2024 2024
6 2024-12-31 1 2401 2024 2025
7 2025-01-01 1 2501 2025 2025
8 2025-01-02 1 2501 2025 2025但我需要YearWeek 2252为2023-01-01 (第1排)或YearWeek 2501为2024-12-31 (排6).我做错什么了?
发布于 2022-07-01 07:44:58
您希望获得ISO年份+周输出(而不是日期时间的年份),所以这样的操作应该有效:
df['WeekYear'] = df['Date'].dt.isocalendar().year
df['Week'] = df['Date'].dt.isocalendar().week
df['YW'] = df['WeekYear'].astype(str).str[2:] + df['Week'].astype(str).str.zfill(2)
df[['Date', 'YW']]
Date YW
0 2022-12-31 2252
1 2023-01-01 2252
2 2023-01-02 2301
3 2023-12-31 2352
4 2024-01-01 2401
5 2024-01-02 2401
6 2024-12-31 2501
7 2025-01-01 2501
8 2025-01-02 2501发布于 2022-07-01 08:26:33
要点是,ISO 8601规定,包含一年中第一个星期四的一周是一年中的第一周,编号为第一周,也称为欧洲周编号。
因此,根据年份的不同,YYYY-01-01可能包括在YYYY年的第一周,也可能包括在第52周(或可能包括53!)YYYY 1年度。YYYY-12-31可能在YYYY+1年的第一周.
https://stackoverflow.com/questions/72825123
复制相似问题