需要星期日作为一周的第一天
Posted
技术标签:
【中文标题】需要星期日作为一周的第一天【英文标题】:Need Sunday as the first day of the week 【发布时间】:2013-06-05 15:31:08 【问题描述】:我希望星期日为 0,但使用 datetime weeday 方法时为 6:
datetime(2013, 6, 9, 11, 59, 59, 1).weekday() # this returns 6
我的语言环境是:“en_US.UTF-8”,所以星期日应该为 0(当我在 bash 提示符下运行“语言环境日”时,它正确地将“星期日”显示为一周的第一天)。
$ locale day
Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday
如何让 python 将星期日显示为一周的第一天?
(我正在使用 pandas 时间序列并调用 .date
来获取日期时间。)
【问题讨论】:
首先,bash 与 python 不同。其次,您认为哪些用例具有周序数有用?也许一些上下文会帮助回答你的问题。 恐怕我认为您没有花足够的时间来充实您的问题。它非常轻巧,就像您关心日期时间一样。你问的是熊猫而不是日期时间吗? 取决于您要执行的操作calendar
包可能会有所帮助。在那里你可以配置哪一天是一周的第一天,还有更多......
【参考方案1】:
试试这个:
(datetime.datetime(2013, 6, 9, 11, 59, 59, 1).weekday() + 1) % 7
【讨论】:
肯定是 +1 而不是 -6 :),你也少了一个括号 是的,真丢脸! ;-) 感谢您的补丁! (-6 也在工作,但不是很合乎逻辑,我同意......) 这似乎有效:weeks = df22.date.map(lambda x: x.week if x.dayofweek == 6 else x.week -1 )【参考方案2】:而不是通过日期(创建日期时间对象)使用 dayofweek 属性(这会更快):
In [1]: rng = pd.date_range('1/1/2013', periods=72, freq='D')
In [2]: (rng.dayofweek + 1 ) % 7
Out[2]:
array([2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3,
4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5,
6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0,
1, 2, 3], dtype=int32)
您可以将其设为属性:
In [3]: rng.my_dayofweek = (rng.dayofweek + 1 ) % 7
同样你可以计算你自己的一周:
In [4]: rng.my_week = rng.map(lambda x: x.week if x.dayofweek else x.week - 1)
这将作为属性提供给您。
.
datetime.date weekday
方法不是特定于语言环境的,它是硬编码的(这里是它的文档字符串):
返回日期所代表的星期几。
Monday == 0 ... Sunday == 6
【讨论】:
是否可以更改 python 的默认工作日以便星期日 == 0? 不在 datetime.dates 工作日方法中。在 pandas 中,您可以轻松编写自己的内容,实际上会更新问题。以上是关于需要星期日作为一周的第一天的主要内容,如果未能解决你的问题,请参考以下文章
为啥在使用 NSCalendarUnitEra 时 ordinalityOfUnit 使用星期一作为一周的第一天?