首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示日历周的正确年份

显示日历周的正确年份
EN

Stack Overflow用户
提问于 2022-07-01 06:20:33
回答 2查看 40关注 0票数 0

我正在寻找日历周的确切年份:

代码语言:javascript
复制
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

结果:

代码语言:javascript
复制
    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).我做错什么了?

EN

回答 2

Stack Overflow用户

发布于 2022-07-01 07:44:58

您希望获得ISO年份+周输出(而不是日期时间的年份),所以这样的操作应该有效:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2022-07-01 08:26:33

要点是,ISO 8601规定,包含一年中第一个星期四的一周是一年中的第一周,编号为第一周,也称为欧洲周编号。

因此,根据年份的不同,YYYY-01-01可能包括在YYYY年的第一周,也可能包括在第52周(或可能包括53!)YYYY 1年度。YYYY-12-31可能在YYYY+1年的第一周.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72825123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档