2017-10-17 16 views
-2

であるかどうかをグループ化します。正規表現は、文字列は、私が似ている文字列の束を持ってそこか

所望のデータフレームのような何かを言う必要があります:どのように私は最初の正規表現を使用して文字列を解析することができます

ACBD 
NaN 
ABCD 

を?私は(ABCD|)を試しましたが、それは空白に戻ります。全体のスニペットとして

+0

何を試しましたか?正規表現を使用する場合は、https://docs.python.org/3/library/re.html pythonのドキュメントをチェックしましたか? – erhesto

+0

'split'を使い、最後の要素を取ることができます – chakri

+0

' @ \ w + [\ t] +(\ w +)? 'を使うことができます。キャプチャグループがない場合、それは 'NaN'であることが分かります – ctwheels

答えて

1

import pandas as pd, numpy as np 

string = """Bought [email protected] ABCD 
Bought [email protected] 
Sold [email protected] ABCD""" 

needle = 'ABCD' 

def search(line): 
    return needle if line.endswith(needle) else np.nan 

df = pd.DataFrame((search(line) for line in string.split("\n"))) 

print(df) 

これは.endswith()の使用、機能search()とリストの内包を行い、ラムダ関数を使用して

 0 
0 ABCD 
1 NaN 
2 ABCD 

でも短いが得られます:

df = pd.DataFrame(map(lambda x: needle if x.endswith(needle) else np.nan, string.split("\n"))) 
print(df) 

さらに個別のソリューションを使用するには、e実際の入力文字列を処理します。

関連する問題