2017-08-21 6 views
1

アルファベット、特殊文字、数字を含む文字列をフォーマットしようとしています。私の目標は、文字列内のアルファベットとスペース以外のすべてを削除することです。私は確かによく見えない複数のコード行でそれを行うことができます。以下のように4行の代わりにオンラインで複数の書式設定を行うことができるように、コードの改行を再フォーマットするのを手伝ってもらえますか?Pythonのpandasデータフレームでラムダ関数を使って複数のテキストフォーマットを使用していますか?

scholar['title_format'] = scholar['title'].map(lambda x: str(x)) #change the value to string 

scholar['title_format'] = scholar['title_format'].map(lambda x: re.sub(r'[^a-zA-Z ]', '', x)) #remove any special characters 

scholar['title_format'] = scholar['title_format'].map(lambda x: re.sub(r'[0-9]', '', x)) #remove any numbers 

scholar['title_format'] = scholar['title_format'].map(lambda x: x.lower()) #change it to lower case 

答えて

2

IIUC:

scholar['title_format'] = scholar['title'].astype(str).str.lower() \ 
              .str.replace(r'[^a-z\s]*', '') 

UPDATE:

scholar['title_format'] = scholar['title'].astype(str).str.lower() \ 
              .str.replace(r'[^a-z]*', '') \ 
              .map(lambda x: ''.join(sorted(x))) 
+0

@Alexander、ああ!ありがとうございました!私は4番目のルールに気付かなかった... – MaxU

+0

これは、スペースを削除しない以外は、うまく動作します。また、ときに我々は、私は次のように使用していた文字の並べ替えのためのスペースを削除します。 学者[ 'title_format'] =学者[ 'title_formatを']マップ(ラムダのx:(x)のソート '' .join()が#sortアルファベット これも組み込むことができますか? –

+0

@kunaldeep、あなたは言った: '私の目標は、文字列のアルファベット__とスペース__を除くすべてを削除することです... ' – MaxU

関連する問題