5

我希望周日为 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 将星期日显示为一周的第一天?

(我正在使用熊猫时间序列并调用.date以获取日期时间。)

4

2 回答 2

11

尝试这个 :

(datetime.datetime(2013, 6, 9, 11, 59, 59, 1).weekday() + 1) % 7
于 2013-06-10T02:36:10.843 回答
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.dateweekday方法不是特定于语言环境的,它是硬编码的(这是它的文档字符串):

返回日期所代表的星期几。
Monday == 0 ... Sunday == 6

于 2013-06-10T03:03:10.717 回答