繁体   English   中英

使用 str.contains 在 python 中查找两个带有 pandas 的子字符串

[英]Using str.contains to look for two substrings with pandas in python

恐怕解决方案很明显或问题重复,但我还没有找到答案:我有一个包含长字符串的 pandas 数据帧,我需要同时匹配两个字符串。 我多次找到“或”版本,但还没有找到“和”解决方案。

请假设以下数据框,其中有趣的信息“元素类型”和子部分类型“由元素之间的随机分隔:

import pandas as pd
data = pd.DataFrame({"col1":["element1_random_string_subpartA"
                           , "element2_ran_str_subpartA"
                           , "element1_some_text_subpartB"
                           , "element2_some_other_text_subpartB"]})

我现在想过滤所有包含 element1 和 subpartA 的行。

data.col1.str.contains("element1|subpartA")

返回一个数据框

True 
True
True
False

这是预期的结果。 但我需要一个“和”组合和

data.col1.str.contains("element1&subpartA")

返回

False
False
False
False

虽然我期待

True
False 
False
False

正则Regex and并不容易:

m = data.col1.str.contains(r'(?=.*subpartA)(?=.*element1)')  

更简单的是将两个条件与&链接为按位AND

m = data.col1.str.contains("subpartA") & data.col1.str.contains("element1")
print (m)
0     True
1    False
2    False
3    False
Name: col1, dtype: bool

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM