2016-06-13 3 views
0

実際のデータを共有することはできません。だから私は例をとっている。 は、私はサフィックスのリストを持っていると仮定 -パンダを使用して、文字列の最後の単語を、文字列の残りの部分を歪ませることなく空の文字列に置き換えるにはどうすればよいですか?

Suffix_List = ["Ltd.", "Inc.", "Limited", "Corp.", "AG"] 

私は会社名を含む列を持つデータフレームを持っています。私は会社名の接尾辞を空の文字列に置き換えたいと思います。これは会社名の残りの部分を歪ませるべきではありません。たとえば、会社名が「CAGE AG」であるとします。 "AG"は、会社名ではなく接尾辞から削除するだけです。結果はちょうど "CAGE"でなければなりません。また、サフィックスがSuffix_Listに存在する場合にのみ、サフィックスを削除する必要があります。

for suffix in Suffix_List: 
    df['company_name'] = df['company_name'].str.replace(suffix,"") 

をしかし、これはあまりにも実際の会社名を歪める -

今私が使用しています。会社名は、可能性が

サンプル - CAGE AG、リミテッド賃金、田下株式会社、セージ株式会社

答えて

2

あなたは接尾辞を置換する正規表現を使用することができます。

In [11]: re.sub("\s?(" + "|".join(Suffix_List) + ")$", "", "CAGE AG") 
Out[11]: 'CAGE' 

これは、任意のかどうかに見える(| )は、文字列の最後($)を終了します。シリーズ/コラムで

あなたはstr.replaceを使用することができます。

In [21]: df = pd.DataFrame([["CAGE AG"], ["Stack Exchange Inc."]], columns=["company"]) 

In [22]: df 
Out[22]: 
      company 
0   CAGE 
1 Stack Exchange 

In [23]: df["company"] = df["company"].str.replace("\s?(" + "|".join(Suffix_List) + ")$", "") 

In [24]: df 
Out[24]: 
      company 
0   CAGE 
1 Stack Exchange 
+0

我々は条件を追加するにはどうすればよい:DF [ "会社"] =のDF [ "会社"] str.replace( "\ sの? "(" + "|" .join(Suffix_List)+ ")$"、 "") これは、単一の単語の会社を歪ませないようにします。たとえば、 - 会社名は "ZINC"です。残っている会社名が「Z」で間違っているため、ここからINCを削除するのは正しいとは限りません。 – ComplexData

+0

@ user6461192おそらくスペースが必要なのでしょうか?例えば'\ s? 'ではなく' \ s + 'で始めます。 –

+0

ありがとうございます。それはうまくいった。あなたが言葉で使われる正規表現の意味を私に教えることができればそれは素晴らしいことでしょう。 – ComplexData

関連する問題