【问题标题】:How can I find week numbers with 2021 year starting on Friday in Python?如何在 Python 中找到从周五开始的 2021 年的周数?
【发布时间】:2021-07-09 20:36:55
【问题描述】:

我是 Python 的新手,我刚刚开始探索交给我的工作。

我的目标是确定给定日期的周数。数据来自excel,输出也将显示在同一个excel文件中。我唯一的问题是,2021 年的第 1 周从星期五开始,但是当我运行 Python 时,第 1 周从 2021 年 1 月 4 日到 2021 年 1 月 10 日开始,而不是从 2021 年 1 月 1 日到 2021 年 1 月 2 日。我目前正在使用此代码 RPD_week = (pd.to_datetime(dffinal['RPD'], errors='coerce')).dt.strftime("%V")

请帮忙,因为我真的已经哭了……

【问题讨论】:

  • 好吧,不。 1 月 1 日是星期五,但这并不意味着日历系统开始这样计数。星期很奇怪,因为有些人一年并不总是有 52 个星期。如果您想根据一年中的某天定义周,那么听起来您想要(pd.to_datetime(dffinal['RPD'], errors='coerce')).dt.dayofyear-1)//7 + 1
  • 我试过这样做,但我得到一个错误说 TypeError: can only concatenate str (not "float") to str

标签: python pandas


【解决方案1】:

在英语国家有两种常用的周编号系统。

一个是ISO体系。星期一是一周的第一天,第 1 周是包含 1 月 4 日的一周。新一年中第一个星期一之前的所有日子都被视为上一年的最后一周。这是 Python 中的 int(mydate.strftime("%V")) 和 Excel 中的 ISOWEEKNUM() 给出的数字。

另一个是北美系统,至少有两种口味。

Excel 风味。 星期日是一周的第一天。第 1 周是包含 1 月 1 日的周。 1 月 1 日之前那一周的任何日子都被视为上一年的最后一周。这是 Excel 中WEEKNUM() 给出的数字。

Python 风格。 星期日是一周的第一天。新年中第一个星期日之前的所有天数都被认为是在第 0 周。这是 Python 中int(mydate.strftime("%U")) 给出的数字。

因此,Python 和 Excel 经常存在分歧。 Excel 说 2020 年 1 月 2 日星期四在第 1 周,因为它在 1 月 1 日之后,这标志着第 1 周。Python 说它在第 0 周,因为第 1 周从 1 月 5 日的第一个星期日开始。

【讨论】:

  • 小问题:ISO8601/%V系统第1周的前一周不是第0周,是上一年的第52周或第53周。例如,尝试time.strftime('%V', time.strptime('2021-01-01', '%Y-%m-%d'))
  • 非常正确,谢谢。已编辑以反映您的评论。
【解决方案2】:

this 有帮助吗? lambda 函数应返回自您提供的某个开始日期以来的周数(7 天周期)。

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多