我需要将pandas.tslib.Timestamp划分为几周。
因此,鉴于a是我使用的pd.DataFrame

tmp = pd.to_datetime(a)
tmp = tmp.apply(lambda x: str(str(x.isocalendar()[1]))


问题是我的一周不是从星期一或星期日开始,而是从星期二开始(它甚至可以从星期三开始-这是用户定义的)。是否可以更改开始星期的定义并仍然使用通用python函数?

还是有其他解决方法?

最佳答案

使用偏移量;您可以将星期几的值重新转换为该范围内的任何其他值,然后从星期几中减去:

user_sow = 3  # wednesday (monday is 1, sunday is 7)

tmp.apply(lambda x: x.isocalendar()[1] - (x.isoweekday() < user_sow))


如果工作日在用户配置的星期的开始之前,则从星期数中减去1(布尔值True在整数上下文中等于1)。

演示:

>>> dt = date.today()   # today's a Wednesday
>>> dt
datetime.date(2015, 4, 28)
>>> dt.isocalendar()[1]
18
>>> dt.isocalendar()[1] - (dt.isoweekday() < 2)  # week starts on Tuesday
18
>>> dt.isocalendar()[1] - (dt.isoweekday() < 3)  # week starts on Wednesday
17

关于python - Python:在isocalendar或strftime或其他语言中定义每周定义的开始日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29917931/

10-12 17:41