次のpandasデータフレーム:
_In [114]:
df['movie_title'].head()
Out[114]:
0 Toy Story (1995)
1 GoldenEye (1995)
2 Four Rooms (1995)
3 Get Shorty (1995)
4 Copycat (1995)
...
Name: movie_title, dtype: object
_
更新:映画のタイトルだけを正規表現で抽出したいと思います。したがって、次の正規表現を使用してみましょう:\b([^\d\W]+)\b
。だから私は次のことを試しました:
_df_3['movie_title'] = df_3['movie_title'].str.extract('\b([^\d\W]+)\b')
df_3['movie_title']
_
ただし、次のようになります。
_0 NaN
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
6 NaN
7 NaN
8 NaN
_
pandasデータフレーム内のテキストから特定の機能を抽出する方法のアイデア。より具体的には、完全に新しいデータフレーム内の映画のタイトルだけを抽出するにはどうすればよいですか。たとえば、出力は次のようになります。
_Out[114]:
0 Toy Story
1 GoldenEye
2 Four Rooms
3 Get Shorty
4 Copycat
...
Name: movie_title, dtype: object
_
あなたが試すことができます - str.extract
および strip
ですが、 str.split
。映画の名前には数字も使用できるためです。次の解決策は、 replace
regex
と strip
で始まる括弧の内容です。
#convert column to string
df['movie_title'] = df['movie_title'].astype(str)
#but it remove numbers in names of movies too
df['titles'] = df['movie_title'].str.extract('([a-zA-Z ]+)', expand=False).str.strip()
df['titles1'] = df['movie_title'].str.split('(', 1).str[0].str.strip()
df['titles2'] = df['movie_title'].str.replace(r'\([^)]*\)', '').str.strip()
print df
movie_title titles titles1 titles2
0 Toy Story 2 (1995) Toy Story Toy Story 2 Toy Story 2
1 GoldenEye (1995) GoldenEye GoldenEye GoldenEye
2 Four Rooms (1995) Four Rooms Four Rooms Four Rooms
3 Get Shorty (1995) Get Shorty Get Shorty Get Shorty
4 Copycat (1995) Copycat Copycat Copycat
特定の部分をキャプチャするには、以下のような()
でテキストグループを割り当てる必要があります。
new_df['just_movie_titles'] = df['movie_title'].str.extract('(.+?) \(')
new_df['just_movie_titles']
pandas.core.strings.StringMethods.extract
StringMethods.extract(pat、flags = 0、** kwargs)
渡された正規表現を使用して各文字列内のグループを検索