2016-07-13 11 views
2

2つの正規表現関数を組み合わせてデータフレームをクリーンアップしたいと思います。私は次のデータフレームを持っていると仮定します。2つの正規表現 - ラムダ関数を1つに結合する

import pandas as pd 
time = ["09:00", "10:00", "11:00", "12:00", "13:00", "33:00"] 
result = ["+52", "+62", "+44 - 10a10", "+44", "+30 - $1200", "110"] 
data = pd.DataFrame({'time' : time, 'result' : result}) 

dataのようになります。

result  time 
0 +52   09:00 
1 +62   10:00 
2 +44 - 10a10 11:00 
3 +44   12:00 
4 +30 - $1200 13:00 
5 110   33:00 

まず、+記号を削除します。次に、-記号とその後のすべてを削除したいと思います。私は2つの機能でそれを達成することができます。

import re 
data['result'] = data['result'].map(lambda x: re.sub('\+', '', x)) 
data['result'] = data['result'].map(lambda x: re.sub('\-.*', '', x)) 

dataがこのようになりました。

すべての置換えを1つの手順で行う方法はありますか?

答えて

3

あなたは正規表現または(|)を使用し、だから、あなたの場合には、ラムダ関数は次のようになり、この

>>> import re 
>>> re.sub(r'\+|-.*', '', 'a+b+c-d+f-g') 
'abc' 

のように、ワンショットでの操作を行うことの両方ができ

data['result'] = data['result'].map(lambda x: re.sub('\+|-.*', '', x)) 
+0

同じ機能をデータフレームの複数の列に適用する方法があります(列は必ずしも互いに隣り合っているわけではありません)。明らかに、これはうまくいかない: 'data [[col1、col2]]。apply(lambda x:re.sub( '\ + | - 。*'、 ''、x))'。 – sedeh

+0

@sedeh申し訳ありません私はパンダについてはあまり考えていない。おそらくあなたはそれを別の質問として尋ねたいかもしれません。 – thefourtheye

関連する問題