2017-12-22 13 views
0

私はデータ

Data['SUMMARY']=Data['SUMMARY'].str.replace(r'([^\w])',' ') 
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'x{2,}',' ') 
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'_+',' ') 
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\d+',' ') 
Data['SUMMARY']=Data['SUMMARY'].str.replace(r'\s{2,}',' ') 

は私がすべての句読点を交換したい、このようないくつかの正規表現を持って、XXXXXXXX、すべての桁、空の文字列''にすべての非英数字。どのようにして1つの正規表現に置き換えることができますか?

+1

'データ[ '概要'] str.replace( '[^-ZA-Z \ S] + | X。 {2、} '、' ') '? –

+0

スペースも削除する必要がありますか? – Allan

答えて

2

だから、あなたは(あなたの質問に基づいて)削除したい

  1. 句読点
  2. X{2,}
  3. 文字または数字

ありません何が重複していますここのテーマ。あなたは手紙と単一の空白だけを残したいと思っています。あなたは、単一のものにあなたの別のパターンを凝縮することができます -

df = pd.DataFrame({'SUMMARY' : ['hello, world!', 'XXXXX test', '123four, five:; six...']}) 

df 

        SUMMARY 
0   hello, world! 
1    XXXXX test 
2 123four, five:; six... 

df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '') 

0  hello world 
1    test 
2 four five six 
Name: SUMMARY, dtype: object 

あなたの列が二つ以上のスペースを持っている場合は、別の呼び出しを行い、それらを交換する必要があります。

df.SUMMARY = df.SUMMARY.str.replace(r'[^a-zA-Z\s]+|X{2,}', '')\ 
         .str.replace(r'\s{2,}', ' ') 
0

あなたはxの下と上ケース2 or more occurrencesを交換したい場合、あなたはまた、空の文字列で、スペース(その他の空白文字)を交換する場合:あなたが残しておきたい場合は

(?i)([^a-z]+|X{2,}) 

あなたは2 x以上使用の大文字と小文字チェーン交換したい場合は、空白文字がと:

(?i)([^a-z\s]+|X{2,}) 

をあなただけ削除したい場合2 X以上の大文字鎖およびxの小文字チェーン保つ:

([^a-zA-Z\s]+|X{2,})