pandas 在python中使用regex删除(或替换)括号和括号内的项

vsaztqbk  于 2022-11-20  发布在  Python
关注(0)|答案(2)|浏览(182)

我有一个csv文件,看起来像下面:

Halley Bailey - 1998 
Hayley Orrantia (1994-) American actress, singer, and songwriter 
Ken Watanabe (actor) 
etc...

我想删除括号中的项目,以及一些名称中的逗号,这样 Dataframe 看起来就像这样:

Halley Bailey
Hayley Orrantia
Ken Watanabe

我尝试使用下面的代码,它成功地删除了名称后面的日期,但没有删除逗号后面的括号或内容,我如何扩展它以便它可以替换所有这些项?

regex = '|'.join(map(re.escape, df['actors']))
vcudknz3

vcudknz31#

尝试使用以下'(^[^\(|^\-]+)',返回-(之前的所有匹配项:

df['Full Name'] = df['Description'].str.extract('(^[^\(|^\-]+)')

返回:

Description        Full Name
0                               Halley Bailey - 1998    Halley Bailey 
1  Hayley Orrantia (1994-) American actress, sing...  Hayley Orrantia 
2                               Ken Watanabe (actor)     Ken Watanabe
xzlaal3s

xzlaal3s2#

假设csv内容存储在 Dataframe df的列csv中,并且df如下所示(如果不知道如何将CSV读入Pandas Dataframe ,请参见下面的第一个注解)

csv
0                               Halley Bailey - 1998
1  Hayley Orrantia (1994-) American actress, sing...
2                               Ken Watanabe (actor)

如果要创建一个名为actors的新列,考虑到actor全名仅由2个单词组成,将执行以下操作

df['actors'] = df['csv'].str.split(' ').str[:2].str.join(' ')

[Out]:

                                                 csv           actors
0                               Halley Bailey - 1998    Halley Bailey
1  Hayley Orrantia (1994-) American actress, sing...  Hayley Orrantia
2                               Ken Watanabe (actor)     Ken Watanabe

另一方面,如果不想创建新列,可以执行以下操作

df['csv'] = df['csv'].str.split(' ').str[:2].str.join(' ')

[Out]:

               csv
0    Halley Bailey
1  Hayley Orrantia
2     Ken Watanabe

备注:

相关问题