Python:在 isocalendar 或 strftime 或其他中定义周定义中的起始日

标签 python pandas dayofweek

我需要将 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( bool 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:在 isocalendar 或 strftime 或其他中定义周定义中的起始日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917931/

相关文章:

python - matplotlib 散点图 x 轴标签

python - 使用 pandas 将列从一个 DataFrame 复制到另一个 DataFrame 的最快方法?

java - 如何在 Java 的 Calendar 类中获取用户输入的日期而不是当前日期?

python - 使用另一个列表中的键聚合列表

Python:无法从空列表中弹出?什么时候列表显然不为空?

Python - 从列表创建连接条件

python - 常用文档字符串列表 :types for pycharm

python - 如何减去 Pandas 中的两个 DataFrame 列

javascript - 在 Javascript 中获取一周中的天数,一周从星期日开始

android - 在 Android 中查看星期几