5

Sunday を 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

日付を経由する (datetime オブジェクトを作成する) のではなく、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 に答える