2017-02-13 8 views
1

の列私は、次のデータフレームシリーズDF [「名前」]を持っているとしましょう:私は最初の後に名前のすべての内容を削除する方法を括弧の位置に基づいてパンダのデータフレーム値についてstr.splitを使用して

  Name 
     'Jerry' 
    'Adam (and family)' 
'Paul and Hellen (and family):\n' 
'John and Peter (and family):/n' 

括弧?

df['Name']= df['Name'].str.split("'(").str[0] 

私はなぜそうは思わないのですか?

私が欲しいの出力はそう括弧の後に、すべてが削除され

  Name 
     'Jerry' 
     'Adam' 
    'Paul and Hellen' 
    'John and Peter' 

です。

答えて

2

はソリューション - \することにより、必要なエスケープ(次のとおりです。regexreplace

df['Name']= df['Name'].str.split("\s+\(").str[0] 
print (df) 
       Name 
0   'Jerry' 
1    'Adam 
2 'Paul and Hellen 
3 'John and Peter 

ソリューション:

df['Name']= df['Name'].str.replace("\s+\(.*$", "") 
print (df) 
       Name 
0   'Jerry' 
1    'Adam 
2 'Paul and Hellen 
3 'John and Peter 

\s+\(.*$は、オプションのwhitespaceから、最初の文字列$"" - 空文字の最後まで、(を置き換えます。

+0

"(\()。* $"は実際にはどういう意味ですか? – Joey

+0

私は正規表現の専門家ではないので、私はそれを理解する方法を説明しようとしています。 – jezrael

0

使用する正規表現:split

>>> import re 
>>> str = 'Adam (and family)' 
>>> result = re.sub(r"(\().*$", '', str) 
>>> print result 
Adam 
+0

これはデータフレームオブジェクトではなくstrに適用されます... TypeError:予期される文字列またはバイト様オブジェクト – Joey

+1

'str.replace'を使用して、正規表現を使用できます:' Series/Indexのpattern/regexの置換他の文字列でstr.replace()またはre.sub()に相当します。詳細はhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.replace.html#pandas.Seriesを参照してください。 str.replace –

関連する問題