2017-11-04 2 views
1

Ich versuche, eine Spalte in einem DataFrame in ein TD-Format zu konvertieren. Die Spalte sieht wie folgt aus (sie derzeit Strings):DateTime-Format in Python

01/11/2012 00:00  
01/11/2012 01:00  
01/11/2012 02:00 

Dies ist, was ich jetzt getan haben:

df['Sdate'] = pd.to_datetime(df['Sdate'], format='%d%m%y %H:%M.%f') 

Aber es einen Fehler wirft sagen

time data '01/11/2012 00:00' does not match format '%d%m%y %H:%M.%f' (match) 

Nicht sicher, warum es das tut. Ist nicht HH: MM 00:00 - 23:00?

Oder fehlt mir hier etwas wirklich Dummes?

+2

Sie verpassen '/', Sie keine Mikrosekunde Richtlinie brauchen, und '% y' sollte "% Y" sein; Verwenden Sie stattdessen "% d /% m /% Y% H:% M". –

Antwort

2

Verwenden to_datetime mit dayfirst Parameter:

df['Sdate'] = pd.to_datetime(df['Sdate'], dayfirst=True) 
print (df) 
       Sdate 
0 2012-11-01 00:00:00 
1 2012-11-01 01:00:00 
2 2012-11-01 02:00:00 

Wenn Format angeben möchten:

df['Sdate'] = pd.to_datetime(df['Sdate'], format='%d/%m/%Y %H:%M') 
print (df) 
       Sdate 
0 2012-11-01 00:00:00 
1 2012-11-01 01:00:00 
2 2012-11-01 02:00:00 
+0

Genau das, was ich gesucht habe. Vielen Dank. Kannst du erklären, welchen Effekt das "Dayfirst = True" hat? –

+0

Wenn Sie es weglassen, wird es geparst '2012-01-11 00: 00: 00' wenn alle Datumsangaben nicht wie' 2012-11-21 00: 00: 00' aussehen. So kann es offensichtlich weggelassen werden, aber wenn nur ein paar Daten und nicht klar "DDMMYY" vs "MMDDYY" ist es hilfreich. – jezrael

Verwandte Themen