我正在寻找一个数据帧的行中是否存在两个不同的字符串。
例如,我目前有这段代码,它提供了有关项目a或b的答案。
items=('a|b')
df1 = train[train['antecedents'].str.contains(items,flags=re.IGNORECASE, regex=True)]
这很有帮助,我正在寻找包含项目 a 和 b 的所有行。
因为我不能使用多个str.contains(因为直到输入到item变量中才指定项目数),所以我不知道如何将'&
'合并到{{ 1}}(我已经尝试过了,但是不起作用)。
是否可以采用其他方式合并'str.contains
'?
答案 0 :(得分:5)
只需将两个条件与&
运算符组合即可:
df1 = train[(train.antecedents.str.contains('a', case=False)) \
& (train.antecedents.str.contains('b', case=False))]
正则表达式替代:
df1 = train[train.antecedents.str.contains('a.*b|b.*a', regex=True, flags=re.I)]
a.*b|b.*a
-正则表达式替换组,确保输入字符串在任何位置(相对于彼此)都包含a
和b
。