916 Stimmen

Wie kann ich den Wochentag eines Datums ermitteln?

Ich möchte Folgendes herausfinden: Angesichts eines Datums ( datetime Objekt), was ist der entsprechende Wochentag?

Zum Beispiel: Sonntag ist der erste Tag, Montag der zweite Tag und so weiter.

Und dann, wenn die Eingabe etwas wie das heutige Datum ist.

>>> today = datetime.datetime(2017, 10, 20)
>>> today.get_weekday()  # what I look for

Die Ausgabe ist vielleicht 6 (da heute Freitag ist)

4voto

neoghost Punkte 41
import datetime
int(datetime.datetime.today().strftime('%w'))+1

Dies sollte Ihnen Ihre tatsächliche Tagesnummer anzeigen - 1 = Sonntag, 2 = Montag, usw...

4voto

ox. Punkte 3067

Um Sonntag als 1 bis Samstag als 7 zu erhalten, ist dies die einfachste Lösung für Ihre Frage:

datetime.date.today().toordinal()%7 + 1

Alle von ihnen:

import datetime

today = datetime.date.today()
sunday = today - datetime.timedelta(today.weekday()+1)

for i in range(7):
    tmp_date = sunday + datetime.timedelta(i)
    print tmp_date.toordinal()%7 + 1, '==', tmp_date.strftime('%A')

Ausgabe:

1 == Sunday
2 == Monday
3 == Tuesday
4 == Wednesday
5 == Thursday
6 == Friday
7 == Saturday

3voto

Gonçalo Peres Punkte 6179

Wenn Sie eine Spalte mit einem Datumsbereich erzeugen wollen ( Date ) und erzeugen eine Spalte, die auf die erste geht und den Wochentag ( Week Day ), tun Sie Folgendes (ich werde die Daten zwischen 2008-01-01 a 2020-02-01 ):

import pandas as pd
dr = pd.date_range(start='2008-01-01', end='2020-02-1')
df = pd.DataFrame()
df['Date'] = dr
df['Week Day'] = pd.to_datetime(dr).weekday

Die Ausgabe sieht wie folgt aus:

enter image description here

En Week Day variiert von 0 bis 6, wobei 0 dem Montag und 6 dem Sonntag entspricht.

3voto

Lazyer Punkte 863

Hier ist ein neuer Weg. Sonntag ist 0.

from datetime import datetime
today = datetime(year=2022, month=6, day=17)
print(today.toordinal()%7)  # 5
yesterday = datetime(year=1, month=1, day=1)
print(today.toordinal()%7)  # 1

3voto

Wir können die Hilfe von Pandas in Anspruch nehmen:

import pandas as pd

Wie oben im Problem erwähnt, haben wir:

datetime(2017, 10, 20)

Wenn wir diese Zeile im Jupyter-Notebook ausführen, erhalten wir eine Ausgabe wie diese:

datetime.datetime(2017, 10, 20, 0, 0)

Verwendung von weekday() und weekday_name:

Wenn Sie Wochentage im ganzzahligen Format wünschen, verwenden Sie:

pd.to_datetime(datetime(2017, 10, 20)).weekday()

Die Ausgabe wird sein:

4

Und wenn Sie es als Namen des Tages wie Sonntag, Montag, Freitag usw. verwenden möchten, können Sie das tun:

pd.to_datetime(datetime(2017, 10, 20)).weekday_name

Die Ausgabe wird sein:

'Friday'

Wenn Sie eine Datumsspalte in Pandas Datenrahmen dann:

Nehmen wir nun an, Sie haben einen Pandas-Datenrahmen mit einer Datumsspalte wie dieser: pdExampleDataFrame['Dates'].head(5)

0   2010-04-01
1   2010-04-02
2   2010-04-03
3   2010-04-04
4   2010-04-05
Name: Dates, dtype: datetime64[ns]

Wenn wir nun den Namen des Wochentags wie Montag, Dienstag, wissen wollen, können wir Folgendes verwenden .weekday_name wie folgt:

pdExampleDataFrame.head(5)['Dates'].dt.weekday_name

wird die Ausgabe sein:

0    Thursday
1      Friday
2    Saturday
3      Sunday
4      Monday
Name: Dates, dtype: object

Und wenn wir die ganzzahlige Anzahl von Wochentagen aus dieser Spalte Termine wollen, dann können wir verwenden:

pdExampleDataFrame.head(5)['Dates'].apply(lambda x: x.weekday())

Die Ausgabe sieht wie folgt aus:

0    3
1    4
2    5
3    6
4    0
Name: Dates, dtype: int64

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X