需要使用 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.contains
和boolean 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 用于部分字符串的精确匹配
Pandas str.contains - 在字符串中搜索多个值并在新列中打印值[重复]