2017-11-16 6 views
1

私は、文字列McNally, King (XYZ)に似た要素を含むPandasデータフレーム列を持っています。私は姓と名前を残して、他のものはすべて削除したいと思います。したがって、クリーニング後にMcNally, King (XYZ)McNally, Kingになるはずです。Python pandas - 抽出と置換

私は2つの機能以下試みたが、希望する結果になっていない:

df['name'] = df['name'].str.extract(r'\w+\,\s[A-Z][a-z]+', expand=False) 

df['name'] = df['name'].replace({r'\w+\,\s[A-Z][a-z]+' : r'\w+\,\s[A-Z][a-z]+'}, regex=True) 

第二のコードが最初のコードは、文字列から名前を抽出しながら、正規表現自体で部分文字列を置き換えますが、私は維持したいです名前の後ろにあるすべての名前を削除します。

編集: サンプルデータ:

Reyes, Rebecca L (XYZ) 
Derry, Odd  P (XYZ) 
Garza, Per-Laura A (MNP) 
Fernandez, Rafael Carl (XYZ) 

予想される出力:

Reyes, Rebecca 
Derry, Odd 
Garza, Per-Laura 
Fernandez, Rafael 

私は編集-in-placeですること、すなわち新しいものを作成し、既存のdatafame自体を変更していないしたいと思います。

あなたはこのような何かを試すことができ
+0

あなたのデータはどこにありますか? –

+0

データは、データフレームとしてpandas.read_csvを使用して読み込み中のCSVファイルにあり、次にクリーンアップを行います。 – ravi

+0

だからどこですか?期待される成果と一緒に見たいと思っています。 –

答えて

2

df = pd.DataFrame({'name':['McNally, King (XYZ)']}, index=[0]) 
df['name'].str.extract(r'(\w+,\s\w+)') 

出力:

0 McNally, King 
Name: name, dtype: object 
関連する問題