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
.dtpe o coloană care este încă text. ApareAttributeError: Can only use .dt accessor with datetimelike values; transformă întâi cupd.to_datetime(). - Scrii
dt.year()cu paranteze.yeareste proprietate, deci primeștiTypeError; în schimbday_name()este metodă și cere paranteze. - Te aștepți ca
dt.day_of_weeksă î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.
Î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.