前提・実現したいこと
ログデータを統計処理するため、データをpandas DataFrameで読み取り、
以下のような文字列のカラム(ステータス)から数値だけを抽出したカラムを作りたいと考えています。
■ 処理対象DataFrame(df)と実現したい内容
"日時","ステータス"
"2019/07/18 18:35:10","Time: 94ms" ⇒ "94"
"2019/07/18 18:35:15","Time: 544ms" ⇒ "544"
"2019/07/18 18:35:20","Time: 1227ms" ⇒ "1227"
発生している問題・エラーメッセージ
数値の桁数が決まっていないので、DataFrameのreplaceメソッドにより
正規表現で置換を行うことを考えたのですが、
繰り返しを指定しているのに、一桁目だけが抽出されてしまいます。
(ソースコード#1, 2とも同じ結果)
"日時","ステータス"
"2019/07/18 18:35:10","Time: 94ms" ⇒ "4"
"2019/07/18 18:35:15","Time: 544ms" ⇒ "4"
"2019/07/18 18:35:20","Time: 1227ms" ⇒ "7"
該当のソースコード
python
1#1 2df['time[ms]'] = df['ステータス'].replace(r'Time:.*([0-9]+)ms', r'\1', regex=True) 3#2 4df['time[ms]'] = df['ステータス'].replace(r'Time:.*([0-9]{1,})ms', r'\1', regex=True) 5
試した内容
以下のように繰り返し回数を指定すると指定した繰り返し回数で置換はできています。
ただし、繰り返しの範囲が上手く行きません。
df['time[ms]'] = df['ステータス'].replace(r'Time:.*([0-9]{3})ms', r'\1', regex=True)
"日時","ステータス"
"2019/07/18 18:35:10","Time: 94ms" ⇒ "Time: 94ms" (置換されない)
"2019/07/18 18:35:15","Time: 544ms" ⇒ "544"
"2019/07/18 18:35:20","Time: 1227ms" ⇒ "227"
補足情報(FW/ツールのバージョンなど)
Python 3.6.4 :: Anaconda, Inc.
DataFrameを使って、このような処理は出来ないのでしょうか。
ご助言いただけますとありがたいです。
どうぞ、よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/23 14:20