2017-08-28 4 views
3

Betrachten Sie dieses BeispielWie bekomme ich die letzte Millisekunde von einem timeindex?

idx = [pd.to_datetime('2012-02-01 14:00:00.531') , 
     pd.to_datetime('2012-02-01 14:01:00'), 
     pd.to_datetime('2012-03-05 14:01:02.2'), 
     pd.to_datetime('2012-03-05 14:01:03.123'), 
     pd.to_datetime('2012-03-10 14:02:00'), 
     pd.to_datetime('2012-03-11 14:02:00') 
     ] 

test = pd.DataFrame({'value':[1,2,3,4,5,6]}, 
        index = idx) 

test 
Out[26]: 
         value 
2012-02-01 14:00:00.531  1 
2012-02-01 14:01:00.000  2 
2012-03-05 14:01:02.200  3 
2012-03-05 14:01:03.123  4 
2012-03-10 14:02:00.000  5 
2012-03-11 14:02:00.000  6 

Ich möchte die letzte Zahl der Millisekunde Teil des Zeitstempel extrahieren. Das ist

test 
Out[24]: 
         last_milli value 
2012-02-01 14:00:00.531   1  1 
2012-02-01 14:01:00.000   0  2 
2012-03-05 14:01:02.200   0  3 
2012-03-05 14:01:03.123   3  4 
2012-03-10 14:02:00.000   0  5 
2012-03-11 14:02:00.000   0  6 

Wie kann ich tun, dass in Pandas ohne Umwandlung der Zeitstempel-String zu Chaos mit und das letzte Zeichen zu bekommen? Gibt es eine zeitbasierte Methode dafür?

Danke!

Antwort

4
test.index.microsecond // 1000 % 10 

Int64Index([1, 0, 0, 3, 0, 0], dtype='int64') 

test.assign(last_milli=test.index.microsecond // 1000 % 10) 

         value last_milli 
2012-02-01 14:00:00.531  1   1 
2012-02-01 14:01:00.000  2   0 
2012-03-05 14:01:02.200  3   0 
2012-03-05 14:01:03.123  4   3 
2012-03-10 14:02:00.000  5   0 
2012-03-11 14:02:00.000  6   0 
+1

Whoops. Du hast es zuerst. Löschen. –

+2

In Millisekunden – piRSquared

+0

haah nett! das '//' soll durch 1000 dividieren und das '%' ist die Ganzzahldivision? –

Verwandte Themen