Panda: crea una colonna di date da anno, mese e giorno


È possibile utilizzare la seguente sintassi di base per creare una colonna di data dalle colonne di anno, mese e giorno in un DataFrame Pandas:

 df[' date '] = pd. to_datetime (dict(year=df. year , month=df. month , day=df. day ))

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: crea una colonna di data da anno, mese e giorno in Pandas

Diciamo che abbiamo il seguente DataFrame panda che mostra le vendite effettuate da un’azienda in date diverse:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' year ': [2021, 2022, 2022, 2022, 2022, 2022, 2022, 2022],
                   ' month ': [7, 1, 1, 2, 5, 10, 11, 12],
                   ' day ': [4, 15, 25, 27, 27, 24, 10, 18],
                   ' sales ': [140, 200, 250, 180, 130, 87, 90, 95]})

#view DataFrame
print (df)

   year month day sales
0 2021 7 4 140
1 2022 1 15 200
2 2022 1 25 250
3 2022 2 27 180
4 2022 5 27 130
5 2022 10 24 87
6 2022 11 10 90
7 2022 12 18 95

Possiamo utilizzare la seguente sintassi per creare una nuova colonna chiamata date che combina i valori delle colonne year , Month e day nel DataFrame per creare una data per ogni riga:

 #create date columns from year, month, and day columns
df[' date '] = pd. to_datetime (dict(year=df. year , month=df. month , day=df. day ))

#view updated DataFrame
print (df)

   year month day sales date
0 2021 7 4 140 2021-07-04
1 2022 1 15 200 2022-01-15
2 2022 1 25 250 2022-01-25
3 2022 2 27 180 2022-02-27
4 2022 5 27 130 2022-05-27
5 2022 10 24 87 2022-10-24
6 2022 11 10 90 2022-11-10
7 2022 12 18 95 2022-12-18

Tieni presente che la colonna della data contiene valori di data basati sui valori nelle colonne anno , mese e giorno in ciascuna riga.

Se utilizziamo df.info() per ottenere informazioni su ciascuna colonna nel DataFrame, possiamo vedere che la nuova colonna della data ha un tipo di dati datetime64 :

 #display information about each column in DataFrame
df. info ()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8 entries, 0 to 7
Data columns (total 5 columns):
 # Column Non-Null Count Dtype         
--- ------ -------------- -----         
 0 year 8 non-null int64         
 1 month 8 non-null int64         
 2 day 8 non-null int64         
 3 dirty 8 non-null int64         
 4 date 8 non-null datetime64[ns]
dtypes: datetime64[ns](1), int64(4)
memory usage: 388.0 bytes

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:

Come aggiungere e sottrarre giorni da una data in Pandas
Come selezionare le righe tra due date in Pandas
Come calcolare la differenza tra due date nei panda

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *