首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正则表达式从列中提取字符串

使用正则表达式从列中提取字符串
EN

Stack Overflow用户
提问于 2021-03-15 12:20:55
回答 3查看 75关注 0票数 1

我想从title列中提取以下字符串,并将其附加到名为hazard_extract的新列中,如下例所示。

代码语言:javascript
复制
test = {'title': ['Other', 'Microbiological - Listeria', 'Extraneous Material', 'Chemical', 'Chemical - Histamine', 'Labelling, Other'], 'hazard_extract':['Other', 'Microbiological', 'Extraneous Material', 'Chemical', 'Chemical', 'Labelling']}
example = pd.DataFrame(test)
example
代码语言:javascript
复制
    title                       hazard_extract
0   Other                       Other
1   Microbiological - Listeria  Microbiological
2   Extraneous Material         Extraneous Material
3   Chemical                    Chemical
4   Chemical - Histamine        Chemical
5   Labelling, Other            Labelling

但是,我使用的是下面的代码--如果字符串没有-,,它就不会提取字符串。在这种情况下,如何既提取Extraneous Material中的单词,又提取ChemicalOther中的单个单词

代码语言:javascript
复制
example['hazard_extract'] = example['title'].str.extract(r'^(.*?),? ')
代码语言:javascript
复制
    title                       hazard_extract
0   Other                       NaN
1   Microbiological - Listeria  Microbiological
2   Extraneous Material         Extraneous
3   Chemical                    NaN
4   Chemical - Histamine        Chemical
5   Labelling, Other            Labelling

非常感谢你的帮助!

EN

回答 3

Stack Overflow用户

发布于 2021-03-15 12:34:20

不需要复杂的正则表达式:

代码语言:javascript
复制
import pandas as pd

test = {'title': ['Other', 'Microbiological - Listeria', 'Extraneous Material', 'Chemical', 'Chemical - Histamine', 'Labelling, Other']}
example = pd.DataFrame(test)
print(example)
print()
example['hazard_extract'] = example['title'].str.split(' -|,').str[0]
print(example)
代码语言:javascript
复制
                        title
0                       Other
1  Microbiological - Listeria
2         Extraneous Material
3                    Chemical
4        Chemical - Histamine
5            Labelling, Other

                        title       hazard_extract
0                       Other                Other
1  Microbiological - Listeria      Microbiological
2         Extraneous Material  Extraneous Material
3                    Chemical             Chemical
4        Chemical - Histamine             Chemical
5            Labelling, Other            Labelling
票数 1
EN

Stack Overflow用户

发布于 2021-03-15 12:35:59

最简单的方法是使用split

代码语言:javascript
复制
example['title'].str.split(r'[-,]').str[0].str.strip()
代码语言:javascript
复制
0                  Other
1       Microbiological 
2    Extraneous Material
3               Chemical
4              Chemical 
5              Labelling
票数 1
EN

Stack Overflow用户

发布于 2021-03-15 12:32:12

试试这个:

代码语言:javascript
复制
example['title'].str.extract(r'^(\w*\s*\w*)\s*[\,\-]?.*')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66632333

复制
相关文章

相似问题

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