2015-08-07 21 views
8

Nel mio dataframe, il tempo è seprated in 3 colonne year, month, day, come questo enter image description herePython & Pandas: Mietitrebbie colonne in una data

Come posso convertire in date, così posso fare il tempo analisi di seris?

posso fare questo:

df.apply(lambda x:'%s %s %s' % (x['year'],x['month'], x['day']),axis=1) 

quali uscite

1095  1954 1 1 
1096  1954 1 2 
1097  1954 1 3 
1098  1954 1 4 
1099  1954 1 5 
1100  1954 1 6 
1101  1954 1 7 
1102  1954 1 8 
1103  1954 1 9 
1104  1954 1 10 
1105  1954 1 11 
1106  1954 1 12 
1107  1954 1 13 

ma ciò che segue?

UPDATE: Questo è ciò che io alla fine con:

from datetime import datetime 
df['date']= df.apply(lambda x:datetime.strptime("{0} {1} {2}".format(x['year'],x['month'], x['day']), "%Y %m %d"),axis=1) 
df.index= df['date'] 

risposta

8

Ecco come convertire valore al tempo:

import datetime 


df.apply(lambda x:datetime.strptime("{0} {1} {2} 00:00:00".format(x['year'],x['month'], x['day']), "%Y %m %d %H:%M:%S"),axis=1) 
+0

Mi dà 'NameError: nome di 'x' non è defined' , qual è il problema? – cqcn1991

+0

Mancava la variabile di espressione lambda utilizzata dal dataframe. sento ancora come se fosse forzato ma fammi sapere se funziona. – FirebladeDan

+0

Penso che forse dovremmo convertire in 'datetime', non' time'? – cqcn1991

Problemi correlati