2017-07-13 51 views
2

嗨,我試圖'清理'具有名爲'持續時間'列的數據集。它具有這樣的元件:pandas - 將列轉換爲分鐘值

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

換言之,大多數記錄是數值(分鐘),但一些具有表示天/小時文本的文本數據。我想將它們全部轉化爲分鐘

我如何在熊貓中實現這一目標?理想情況下,我想使用一些庫/函數來避免我必須標記字符串並手動解析/轉換。

到目前爲止,我一直在努力

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

,但我發現一個

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

錯誤

回答

3

試試這個:

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你可能想要做更多的替換你有更多「不尋常」的縮寫...

+0

完美,謝謝! – user1361529

+0

@ user1361529,很高興我能幫忙:-) – MaxU

+0

太棒了!回答 – piRSquared