首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据dataframe中的筛选器向行添加条目

根据dataframe中的筛选器向行添加条目
EN

Stack Overflow用户
提问于 2022-03-13 16:10:01
回答 2查看 50关注 0票数 1

我有一个像这样的数据文件:

代码语言:javascript
复制
dataFrame = pd.DataFrame({'Name': [' Compound Mortar ',
                                   ' lime plaster ',
                                    'mortar Screed ',
                                    ' Gypsum Plaster ',
                                    ' Gypsum Plaster 2',
                                    ' lime Plaster 233',
                                    'Clay 23',
                                    'Clay plaster Mortar']})

我使用一个过滤器来搜索特定的单词。到目前为止,我的做法是:

代码语言:javascript
复制
dataFrame["Type"] =  ""

mask1 = dataFrame["Name"].apply(lambda x: "Mortar".casefold() in "".join(x).casefold())

我希望如果过滤后的单词出现在"NAME“列中,则搜索的单词将添加到"Type”列中。可能会有更多的词语被发现。例如,如果您使用了一个带有"Glue“字的新过滤器。在这种情况下,列"Type“中的对应行应该包含找到的两个关键字。(一份名单就可以了)

EN

回答 2

Stack Overflow用户

发布于 2022-03-13 16:26:45

你可以直接做str.findall

代码语言:javascript
复制
import re
word = ['Mortar','Clay']
dataFrame['new'] = dataFrame.Name.str.findall('|'.join(word),flags=re.IGNORECASE).map(','.join)
dataFrame
Out[776]: 
                  Name          new
0     Compound Mortar        Mortar
1        lime plaster              
2       mortar Screed        mortar
3      Gypsum Plaster              
4     Gypsum Plaster 2             
5     lime Plaster 233             
6              Clay 23         Clay
7  Clay plaster Mortar  Clay,Mortar
票数 2
EN

Stack Overflow用户

发布于 2022-03-13 16:16:33

试试这个:

代码语言:javascript
复制
dataFrame['Type'] = pd.concat([dataFrame['Name'].str.contains(word, case=False).map({True: word, False: ''}) for word in words], axis=1).agg(list, axis=1).str.join(',').str.strip(',')

输出:

代码语言:javascript
复制
>>> dataFrame
                  Name         Type
0     Compound Mortar        Mortar
1        lime plaster              
2       mortar Screed        Mortar
3      Gypsum Plaster              
4     Gypsum Plaster 2             
5     lime Plaster 233             
6              Clay 23         Clay
7  Clay plaster Mortar  Mortar,Clay
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71458536

复制
相关文章

相似问题

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