2017-07-13 16 views
2

こんにちは私は 'Duration'という列を持つデータセットを 'クリーンアップ'しようとしています。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

関連する問題