请考虑以下熊猫的数据:
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知道如何从熊猫的资料中提取特定的特征吗?更具体地说,我如何在一个全新的数据文件中提取电影的标题?例如,所需的输出应该是:
Out[114]:
0 Toy Story
1 GoldenEye
2 Four Rooms
3 Get Shorty
4 Copycat
...
Name: movie_title, dtype: object发布于 2016-03-16 07:38:04
您可以尝试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发布于 2016-03-16 07:19:53
您应该像下面这样使用()分配文本组,以捕获其中的特定部分。
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) 使用传递的正则表达式在每个字符串中查找组
发布于 2021-04-14 17:49:55
我想在符号"@“和”符号“之前提取文本。(句号)我试过了,它或多或少地起了作用,因为我有符号"@“,但无论如何我不想要这个符号:
df['col'].astype(str).str.extract('(@.+.+)https://stackoverflow.com/questions/36028932
复制相似问题