2017-03-15 1 views
1

Ich habe die folgende Spalte in einem Datenrahmen bereits von Mysql DB importiert wird:wie ein Byte Objekttyp Datetime in Pandas konvertieren

atst 
b'2017-01-17 01:50:00' 
b'2017-01-17 01:50:00' 
b'2017-01-17 01:50:00' 

ich brauche es in Datetime zu konvertieren, ich habe dies bereits versucht, Ansatz, aber es setzt Nat in Spalte:

df1['atst']=df['atst'].str.decode("utf-8") 
df1['atst']=pd.to_datetime(df1['atst']) 

der Grund, warum ich auf UTF-8 dekodieren ist, dass, wenn ich versuche, es zu konvertieren, ohne Dekodierung bekomme ich folgende Fehlermeldung:

Unknown string format 

Antwort

2

Der Inhalt Ihrer Spalte setzt sich aus Strings und nicht Byte-Strings als solche zusammen, und daher ist es nicht mehr notwendig, von UTF-8 zu dekodieren, da sie bereits decodiert sind.

Schneiden Sie stattdessen die Elemente vom ersten Index bis zum Ende, indem Sie sie wie jede andere Zeichenfolge behandeln. (Beachten Sie, dass 0 die ersten Zeichen in der Zeichenfolge, die als Ergebnis weggelassen werden)

pd.to_datetime(df['atst'].str.slice(1)) 

0 2017-01-17 01:50:00 
1 2017-01-17 01:50:00 
2 2017-01-17 01:50:00 
Name: atst, dtype: datetime64[ns] 

Der str.decode Schritt gearbeitet hätte, wenn die korrekte Schreibweise Ihren Datenrahmen in folgendem Format zusammengesetzt worden:

# note b is prefixed in front of quotes 
d = pd.DataFrame(dict(atst_mod=[b"2017-01-17 01:50:00", b"2017-01-17 01:50:00", 
           b"2017-01-17 01:50:00"])) 
pd.to_datetime(d['atst_mod'].str.decode("utf-8")) 

0 2017-01-17 01:50:00 
1 2017-01-17 01:50:00 
2 2017-01-17 01:50:00 
Name: atst_mod, dtype: datetime64[ns] 
Verwandte Themen