需要使用 pandas.str() 使用字符串列表从列中选择值 [重复]

Posted

技术标签:

【中文标题】需要使用 pandas.str() 使用字符串列表从列中选择值 [重复]【英文标题】:Need to select values from a column using a list of strings using pandas.str() [duplicate] 【发布时间】:2019-10-13 18:39:42 【问题描述】:

需要从字符串列表中搜索字符串列值。搜索列表中的字符串只是列中值的子字符串

df = pd.DataFrame(data='text':['abc def', 'def ghi', 'poi opo', 'aswwf', 'abcs  sd'], 'id':[1, 2, 3, 4, 5])

Out [1]:
    text     id
0   abc def  1
1   def ghi  2
2   poi opo  3
3   aswwf    4
4   abcs sd  5

search = ['abc', 'poi']

必填:


Out [2]:
    text     id
0   abc def  1
1   poi opo  3
2   abcs sd  5

【问题讨论】:

【参考方案1】:

使用Series.str.containsboolean indexing - 列表的所有值都由| 加入正则表达式OR

pat = '|'.join(search)
df1 = df[df['text'].str.contains(pat)]
print (df1)
       text  id
0   abc def   1
2   poi opo   3
4  abcs  sd   5

【讨论】:

【参考方案2】:

@jezrael'answer 很棒,只要要搜索的模式不包含像 | 这样的特殊字符。但是您可以一次处理每个元素并在最后执行全局 。如果要搜索包含特殊字符的字符串,可以使用:

df[pd.concat([df.text.str.contains(i, regex=False) for i in search], axis=1).any(axis=1)]

它按预期给出:

       text  id
0   abc def   1
2   poi opo   3
4  abcs  sd   5

【讨论】:

以上是关于需要使用 pandas.str() 使用字符串列表从列中选择值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

pandas - series.str.extract 正在删除捕获组的第一个字符

Pandas str.contains 用于部分字符串的精确匹配

Python pandas str.extract 从多列

Pandas str.contains - 在字符串中搜索多个值并在新列中打印值[重复]

用 pandas str.replace 替换多个子字符串值

pandas str.contains 匹配多个字符串并获取匹配的值