2017-03-14 4 views
0

Ich habe Pandas Datenrahmen mit einem Epochenzeitstempel in ms. Ich möchte zu s konvertieren und ich habe einfach durch 1000,0 geteilt. Dies gibt jedoch folgendes zurück.Pandas Epoche Zeit Umwandlung `ms` zu` s`

df['time_stamp'] = df['time_ms']/1000.0 

print df.head() 

time_ms  time_stamp 
1486339200000  1.486339e+09 

Warum wandelt diese den Typ? Verwenden Sie 1000.0 und nicht 1000 sollte das richtige Format beibehalten. Wenn ich anschließend versuche, den Tag oder das Datum mit dt.day von diesem zu finden, schlägt es fehl.

Wunsch Ausgang

 time_ms  time_stamp 
    1486339200000  1486339200 

Antwort

2

Ich denke Problem, das Sie durch float teilen, wird der Ausgang dtypefloat auch.

df['time_stamp'] = (df['time_ms']/1000.0) 
print (df) 
     time_ms time_stamp 
0 1486339200000 1.486339e+09 

print (df.dtypes) 
time_ms   int64 
time_stamp float64 
dtype: object 

So funktioniert dann cast int:

df['time_stamp'] = (df['time_ms']/1000.0).astype(np.int64) 
print (df) 
     time_ms time_stamp 
0 1486339200000 1486339200