2016-12-14 2 views
0

Ich habe ein Datenframe, das eine Spalte namens 'fecha_dato' hat. Es speichert das Datum wie '2016-05-28'. Ich möchte die 2016, 05 und 28 als int aus fecha_dato als neue Spalten namens Jahr, Monat und Tag extrahieren. Ich benutze den Iterator-Weg, aber es ist zu langsam. Gibt es einen effizienten Weg, dies zu tun?Wie man Jahr, Monat und Tag in Pandas extrahiert?

Antwort

8

Sie benötigen dt.year, dt.month und dt.day:

df['year'] = df.fecha_dato.dt.year 
df['month'] = df.fecha_dato.dt.month 
df['day'] = df.fecha_dato.dt.day 

Probe:

df = pd.DataFrame({'fecha_dato':['2016-05-28','2016-06-28','2016-07-28']}) 

#if dtype is not datetime, cast it 
df.fecha_dato = pd.to_datetime(df.fecha_dato) 

df['year'] = df.fecha_dato.dt.year 
df['month'] = df.fecha_dato.dt.month 
df['day'] = df.fecha_dato.dt.day 
print (df) 
    fecha_dato year month day 
0 2016-05-28 2016  5 28 
1 2016-06-28 2016  6 28 
2 2016-07-28 2016  7 28 
2

elegante Art und Weise String in allen drei Spalten mit einem Schritt

df = pd.DataFrame({'fecha_dato':['2016-05-28','2016-06-28','2016-07-28']}) 

regex = '(?P<Year>[^-]+)-(?P<Month>[^-]+)-(?P<Day>[^-]+)' 
pd.concat([df, df.fecha_dato.str.extract(regex).astype(int)], axis=1) 

enter image description here

zu analysieren
+1

aber dann in Int – jezrael

+0

@jezrael werfen ja, danke – piRSquared

Verwandte Themen