2017-03-06 4 views
1

Ich habe einen Panda-Datenrahmen (Python 2.11) mit der Zeit als Text in einer Spalte (Format hh: mm: ss). Ich möchte nur die Stunden (minus oder Sekunden) bekommen. Dazu erstelle ich eine ListeWert von Liste in Pandas

df.Time.str.split(":") 

Auf diese Weise bekomme ich eine Liste z. [10,23,00]. Wie kann ich auf den ersten (zweiten oder dritten) Wert zugreifen, um für jede Zeile im Datenrahmen weiterarbeiten zu können?

df.Time.str.split(":")[0] 

gibt die erste Zeile, aber nicht das erste Element zurück.

Antwort

5

Ich glaube, Sie brauchen Parameter expand=True - dann 3 Spalten der Ausgabe df ist:

df.Time.str.split(":", expand=True) 

Probe:

df = pd.DataFrame({'Time':['10:23:00', '11:23:00']}) 

print (df) 
     Time 
0 10:23:00 
1 11:23:00 

df[['hour','minute','seconds']] = df.Time.str.split(":", expand=True) 
print (df) 
     Time hour minute seconds 
0 10:23:00 10  23  00 
1 11:23:00 11  23  00 

Wenn nicht alle relevanten Werte benötigen, ist möglich Verwendung .str[] für ausgewählte Werte von Listen - docs:

df['hour'] = df.Time.str.split(":").str[0] 
df['minute'] = df.Time.str.split(":").str[1] 
print (df) 
     Time hour minute 
0 10:23:00 10  23 
1 11:23:00 11  23 
+1

Erweitern ist schön :-) + 1 – pansen

+0

@pansen - danke. – jezrael

Verwandte Themen