2015-09-03 8 views
16

Ho letto un sacco di risposte SO ma non riesco a trovare una soluzione chiara.Panda - convertire stringhe in tempo senza data

ho questo dati in un df chiamato day1 che rappresenta ore:

1 10:53 
2 12:17 
3 14:46 
4 16:36 
5 18:39 
6 20:31 
7 22:28 
Name: time, dtype: object> 

voglio convertirlo in un formato di ora. Ma quando faccio questo:

day1.time = pd.to_datetime(day1.time, format='H%:M%')

Il risultato include la data odierna:

1 2015-09-03 10:53:00 
2 2015-09-03 12:17:00 
3 2015-09-03 14:46:00 
4 2015-09-03 16:36:00 
5 2015-09-03 18:39:00 
6 2015-09-03 20:31:00 
7 2015-09-03 22:28:00 
Name: time, dtype: datetime64[ns]> 

Sembra l'argomento format non funziona - come faccio ad ottenere il tempo come mostrato qui senza la data ?


Aggiornamento

i seguenti formati correttamente l'ora, ma in qualche modo la colonna è ancora un tipo di oggetto. Perché non converte in datetime64?

day1['time'] = pd.to_datetime(day1['time'], format='%H:%M').dt.time

1 10:53:00 
2 12:17:00 
3 14:46:00 
4 16:36:00 
5 18:39:00 
6 20:31:00 
7 22:28:00 
Name: time, dtype: object> 
+1

Sei in volta o letteralmente poche ore? – EdChum

+0

@EdChum Time - non come oggetto. – RDJ

+2

È un 'datetime.time' non' datetime64' questo è corretto che il dtype per la serie è 'object' – EdChum

risposta

19

Dopo aver eseguito la conversione è possibile utilizzare la funzione di accesso datetime dt per accedere solo il hour o time componente:

In [51]: 

df['hour'] = pd.to_datetime(df['time'], format='%H:%M').dt.hour 
df 
Out[51]: 
     time hour 
index    
1  10:53 10 
2  12:17 12 
3  14:46 14 
4  16:36 16 
5  18:39 18 
6  20:31 20 
7  22:28 22 

anche la stringa di formato H%:M% non è valido, è probabile che raise a ValueError: ':' is a bad directive in format 'H%:M%'

Per quanto riguarda il tuo ultimo commento il DTYPE non è datetime.timedatetime:

In [53]: 
df['time'].iloc[0] 

Out[53]: 
datetime.time(10, 53) 
0

È possibile utilizzare to_timedelta

pd.to_timedelta(df+':00') 
Out[353]: 
1 10:53:00 
2 12:17:00 
3 14:46:00 
4 16:36:00 
5 18:39:00 
6 20:31:00 
7 22:28:00 
Name: Time, dtype: timedelta64[ns] 
Problemi correlati