我有以下清单:
search_list = ['STEEL','IRON','GOLD','SILVER']
我需要在数据帧(df)中搜索:
^{pr2}$并将匹配的行插入到新的数据帧(newdf)中,从列表中添加具有匹配词的新列:
a b c
0 123 'Blah Blah Steel' 'STEEL'
1 789 'Blah Blah Gold' 'GOLD'
我可以使用以下代码提取匹配行:
newdf=df[df['b'].str.upper().str.contains('|'.join(search_list),na=False)]
但我不知道如何将列表中匹配的单词添加到c列中
我在想,匹配需要捕获列表中匹配词的索引,然后使用索引号来提取值,但我不知道如何做到这一点。在
如有任何帮助或建议,我们将不胜感激
谢谢
一种方法是
你也可以按照
^{pr2}$对于第一个,您可以选择先将列},而如果{}不包含任何单词,第二个将抛出错误。在
c
添加到df
,然后过滤掉{你也可以看到这个问题:Get the first item from an iterable that matches a condition
从最高分的答案中运用这个方法
您可以使用extract并过滤掉那些
nan
(即不匹配):输出
^{pr2}$请注意,您必须导入re模块才能使用
re.IGNORECASE
标志。作为替代,您可以直接使用2
,这是re.IGNORECASE
标志的值。在更新
如@user3483203所述,您可以使用以下方法保存导入:
您可以使用
set.intersection
查找列b
中出现的单词:输出:
^{pr2}$如果要删除没有匹配项的行,请使用
df[df['c'].astype(bool)]
相关问题 更多 >
编程相关推荐