首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用包含的关键字对pandas中的数据进行分类

如何使用包含的关键字对pandas中的数据进行分类
EN

Stack Overflow用户
提问于 2019-07-09 11:28:28
回答 2查看 44关注 0票数 2

df为数据帧,如下所示:

代码语言:javascript
复制
      date   text
0  2019-6-7  London is good.             
1  2019-5-8  I am going to Paris.        
2  2019-4-4  Do you want to go to London?
3  2019-3-7  I love Paris!   

我想添加一个列city,它表示text中包含的城市,即

代码语言:javascript
复制
       date  text                          city
0  2019-6-7  London is good.               London
1  2019-5-8  I am going to Paris.          Paris 
2  2019-4-4  Do you want to go to London?  London
3  2019-3-7  I love Paris!                 Paris 

如何在不使用lambda的情况下完成此操作

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-09 11:31:36

你可以先匹配确定你有城市列表,然后匹配str.findall

代码语言:javascript
复制
df.text.str.findall('London|Paris').str[0]
Out[320]: 
0    London
1     Paris
2    London
3     Paris
Name: text, dtype: object
df['city'] = df.text.str.findall('London|Paris').str[0]
票数 3
EN

Stack Overflow用户

发布于 2019-07-09 11:43:50

加上@WenYoBen的方法,如果一个文本中只有巴黎或伦敦中的一个,那么str.extract更好:

代码语言:javascript
复制
regex = '(London|Paris)'
df['city'] = df.text.str.extract(regex)
df

       date         text                        city
0   2019-6-7    London is good.                 London
1   2019-5-8    I am going to Paris.            Paris
2   2019-4-4    Do you want to go to London?    London
3   2019-3-7    I love Paris!                   Paris

如果你想把你的正则表达式中的所有城市都放在一个文本中,那么str.extractall也是一个选择:

代码语言:javascript
复制
df['city'] = df.text.str.extractall(regex).values
df
          date  text                           city
0    2019-6-7   London is good.                London
1    2019-5-8   I am going to Paris.           Paris
2    2019-4-4   Do you want to go to London?   London
3    2019-3-7   I love Paris!                  Paris

注意,如果有多个匹配项,则extractall将返回一个列表

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56944934

复制
相关文章

相似问题

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