2017-03-01 46 views
1
from pandas import DataFrame,Series 
import pandas as pd 
df 
text             region 
The Five College Region       The Five College Region 
South Hadley (Mount Holyoke College)    South Hadley 
Waltham (Bentley University), (Brandeis Univer..) Waltham 

textから領域を抽出する必要があります。 行に "("を含む場合は空白を削除してください) 行に "("が含まれていない場合は、それを保持して地域にコピーしてください) str.extract機能と。しかし、私はこの正規表現パターンは、私はまた、スプリットfunctonを使用すると、この問題データフレームからの文字列の抽出

str.split('(')[0] 

しかし、私のために働くことを認める最初の文字列 を抽出することはできません

df['Region'] =df['text'].str.extract(r'(.+)\(.*') 

右正規表現パターンを書くことで悩んでい結果を列に入れる方法がわからない。 両方の方法をカバーする回答を受け取ろうと思います。

答えて

2

オプション1
assign + str.split

df.text.str.split('\s*\(').str[0] 

0 The Five College Region 
1    South Hadley 
2     Waltham 
Name: text, dtype: object 

df.assign(region=df.text.str.split('\s*\(').str[0]) 

               text     region 
0       The Five College Region The Five College Region 
1    South Hadley (Mount Holyoke College)    South Hadley 
2 Waltham (Bentley University), (Brandeis Univer..)     Waltham 

オプション2
join + str.extract

df.text.str.extract('(?P<region>[^\(]+)\s*\(*', expand=False) 

0 The Five College Region 
1    South Hadley 
2     Waltham 
Name: text, dtype: object 

df.join(df.text.str.extract('(?P<region>[^\(]+)\s*\(*', expand=False)) 

               text     region 
0       The Five College Region The Five College Region 
1    South Hadley (Mount Holyoke College)    South Hadley 
2 Waltham (Bentley University), (Brandeis Univer..)     Waltham 
+0

あなたが正規表現パターンを説明する助けてもらえ "(?P [^ \(] +)\ sの* \(*"?私はそれについて混乱している。 –

+0

@DingruiZhang '?P 'は、抽出されたコンポーネントに名前を付けるのが一般的です。これは、抽出された 'pd.Series'の名前に変換されます。 ''(^。 ') '(' '' \' *( ''は0以上のスペースの後に0以上の ''が続く1つ以上の文字です。 – piRSquared

関連する問題