首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用正则表达式提取大熊猫数据中的特定内容?

如何用正则表达式提取大熊猫数据中的特定内容?
EN

Stack Overflow用户
提问于 2016-03-16 07:12:22
回答 4查看 101.3K关注 0票数 26

请考虑以下熊猫的数据:

代码语言:javascript
复制
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。因此,我尝试了以下几点:

代码语言:javascript
复制
df_3['movie_title'] = df_3['movie_title'].str.extract('\b([^\d\W]+)\b')
df_3['movie_title']

然而,我得到以下信息:

代码语言:javascript
复制
0       NaN
1       NaN
2       NaN
3       NaN
4       NaN
5       NaN
6       NaN
7       NaN
8       NaN

知道如何从熊猫的资料中提取特定的特征吗?更具体地说,我如何在一个全新的数据文件中提取电影的标题?例如,所需的输出应该是:

代码语言:javascript
复制
Out[114]:

0     Toy Story
1     GoldenEye
2    Four Rooms
3    Get Shorty
4       Copycat
...
Name: movie_title, dtype: object
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-16 07:38:04

您可以尝试str.extractstrip,但更好的做法是使用str.split,因为电影名称中也可以是数字。下一个解决方案是replace内容的括号,由regexstrip引导和尾随空格:

代码语言:javascript
复制
#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
票数 53
EN

Stack Overflow用户

发布于 2016-03-16 07:19:53

您应该像下面这样使用()分配文本组,以捕获其中的特定部分。

代码语言:javascript
复制
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) 使用传递的正则表达式在每个字符串中查找组

票数 8
EN

Stack Overflow用户

发布于 2021-04-14 17:49:55

我想在符号"@“和”符号“之前提取文本。(句号)我试过了,它或多或少地起了作用,因为我有符号"@“,但无论如何我不想要这个符号:

代码语言:javascript
复制
df['col'].astype(str).str.extract('(@.+.+)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36028932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档