2017-07-13 5 views
2

Hallo Ich versuche, ein Dataset zu 'säubern', das eine Spalte 'Dauer' hat. Es hat Elemente wie folgt aus:Pandas - Spalte in Minutenwerte umwandeln

18 mins 
34 mins 
1 hr 51 mins 
1 day 1 hr 
1 day 2 hrs 32 mins 
3 days 4 hrs 48 mins 

Mit anderen Worten sind die meisten Einträge Zahlenwerte (Minuten), aber einige Textdaten haben, die Tag/h Text darstellen. Ich würde sie alle gerne in Minuten umwandeln

Wie erreiche ich das in Panda? Idealerweise würde ich gerne eine Bibliothek/Funktion verwenden, die vermeidet, dass ich die Zeichenfolge in Token zerlegen und manuell analysieren/konvertieren muss.

so weit, ich habe versucht worden

data['Duration'] = pd.Timedelta(data['Duration']) 

aber ich bin ein

ValueError: Value must be Timedelta, string, integer, float, timedelta or convertible

Fehler

Antwort

3

Versuchen Sie, dieses:

In [99]: pd.to_timedelta(df['Duration'].replace(['mins','hr','hrs'], 
               ['min','hour','hour'], 
               regex=True)) 
Out[99]: 
0 0 days 00:18:00 
1 0 days 00:34:00 
2 0 days 01:51:00 
3 1 days 01:00:00 
4 1 days 02:32:00 
5 3 days 04:48:00 
Name: x, dtype: timedelta64[ns] 

PS Sie können möchte mehr ersetzen, wenn Sie haben mehr "ungewöhnliche" Abkürzungen ...

+0

Perfekt, danke! – user1361529

+0

@ user1361529, froh, ich könnte helfen :-) – MaxU

+0

Awesome! antwort – piRSquared