Series.dt (year, month, day_name, strftime, to_period) în pandas

Accesorul .dt dă acces la anul, luna, ziua sau ziua săptămânii dintr-o coloană de date și le formatează ca text.

Sintaxă
serie.dt.year  serie.dt.month  serie.dt.day  serie.dt.day_name()  serie.dt.strftime(format)  serie.dt.to_period(freq)

Ce face Series.dt (year, month, day_name, strftime, to_period)

Pe o coloană de tip datetime64 (de exemplu după pd.to_datetime()), accesorul .dt oferă părțile fiecărei date: dt.year, dt.month, dt.day, dt.hour, dt.day_of_week (0 = luni). Acestea sunt proprietăți, deci se scriu fără paranteze. Vechiul nume dt.dayofweek dă avertisment de depreciere în pandas 3.1.

dt.day_name() și dt.month_name() dau numele zilei și al lunii, în engleză. dt.strftime("%d.%m.%Y") transformă data în text cu formatul dorit, iar dt.to_period("M") o transformă într-o perioadă (de exemplu luna 2026-03), utilă la gruparea pe luni.

Pentru perioade, codul de lună este "M", iar pentru an "Y"; la date_range și resample se folosesc "ME" și "YE" (sfârșitul lunii, al anului).

Parametri

Parametru Descriere
format La dt.strftime(): formatul textului, de exemplu "%d.%m.%Y" sau "%Y-%m".
freq La dt.to_period(): "M" lună, "Q" trimestru, "Y" an, "W" săptămână.
locale La dt.day_name()/dt.month_name(): limba numelor; depinde de ce limbi are instalate sistemul.

Ce returnează

O Series nouă: numere pentru year, month, day; text pentru day_name() și strftime(); perioade pentru to_period().

Exemple

Exemplul 1: Anul, luna și ziua

import pandas as pd

df = pd.DataFrame({"client": ["Ana", "Mihai", "Elena"],
                   "data": pd.to_datetime(["2026-03-05", "2026-07-19", "2026-12-24"])})
df["an"] = df["data"].dt.year
df["luna"] = df["data"].dt.month
df["zi"] = df["data"].dt.day
print(df)

Rezultat

  client       data    an  luna  zi
0    Ana 2026-03-05  2026     3   5
1  Mihai 2026-07-19  2026     7  19
2  Elena 2026-12-24  2026    12  24

Exemplul 2: Ziua săptămânii, în engleză și în română

Numele vin în engleză; un dicționar după dt.day_of_week (0 = luni) le dă în română, indiferent de sistem.

import pandas as pd

date = pd.Series(pd.to_datetime(["2026-10-19", "2026-10-24", "2026-10-25"]))
print(date.dt.day_name().tolist())
zile = {0: "luni", 1: "marți", 2: "miercuri", 3: "joi", 4: "vineri", 5: "sâmbătă", 6: "duminică"}
print(date.dt.day_of_week.map(zile).tolist())

Rezultat

['Monday', 'Saturday', 'Sunday']
['luni', 'sâmbătă', 'duminică']

Exemplul 3: Formatare ca text și total pe luni

import pandas as pd

vanzari = pd.DataFrame({
    "data": pd.to_datetime(["2026-01-05", "2026-01-20", "2026-02-03", "2026-02-27"]),
    "lei": [120, 80, 200, 50],
})
print(vanzari["data"].dt.strftime("%d.%m.%Y").tolist())
vanzari["luna"] = vanzari["data"].dt.to_period("M")
print(vanzari.groupby("luna")["lei"].sum())

Rezultat

['05.01.2026', '20.01.2026', '03.02.2026', '27.02.2026']
luna
2026-01    200
2026-02    250
Freq: M, Name: lei, dtype: int64

Greșeli frecvente

  • Folosești .dt pe o coloană care este încă text. Apare AttributeError: Can only use .dt accessor with datetimelike values; transformă întâi cu pd.to_datetime().
  • Scrii dt.year() cu paranteze. year este proprietate, deci primești TypeError; în schimb day_name() este metodă și cere paranteze.
  • Te aștepți ca dt.day_of_week să înceapă de la duminică sau de la 1. În pandas, luni este 0 și duminică este 6.

Comenzi înrudite

  • pd.to_datetime(): Transformă text sau numere în date calendaristice (datetime64), ca să poți calcula cu ele și să folosești accesorul .dt.
  • pd.date_range(): Creează un șir de date la intervale egale: fiecare zi, fiecare sfârșit de lună sau fiecare luni dintr-o perioadă.
  • DataFrame.resample(): Grupează o serie de timp pe intervale (săptămâni, luni) și calculează câte o valoare pe interval: sumă, medie, număr.
  • DataFrame.groupby(): Împarte tabelul în grupuri după una sau mai multe coloane, ca să calculezi totaluri, medii sau numărări pentru fiecare grup.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Series.dt (year, month, day_name, strftime, to_period)

Ai o nelămurire despre utilizarea comenzii Series.dt (year, month, day_name, strftime, to_period) sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.