if all([df['column_name'].contains(_) for _ in ['test1', 'test2']]):
print("All strings are contained in it.")
else:
print("Not all strings are contained in it.")
假设情况属实,下面是您将收到的示例:
>>> x = [_ in df['column_name'] for _ in ['test1', 'test2']
>>> print(x)
[True, True] # => returns True for all()
>>> all(x)
True
>>> x[0] = 'ThisIsNotIntTheColumn' in df['column_name']
>>> print(x)
[False, True]
>>> all(x)
False
from functools import reduce
def filter_by_tag(df, filter_string, search_col='TAG'): # searches in 'TAG' column by default
letters = filter_string.strip().upper().split(' ')
filtered_df = df[reduce(lambda a, b: a & b, (df[search_col].str.contains(s, na=False) for s in letters))]
return filtered_df
5条答案
按热度按时间smdnsysy1#
不,您必须创建2个条件,并使用
&
,并根据运算符优先级将条件括起来:如果你想测试任何一个单词,那么以下方法都可以:
wnavrhmk2#
这将测试字符串中的任意数字或单词
fdx2calv3#
忽略
'test2
中缺少的引号,“and”运算符是布尔逻辑运算符。它不会连接字符串,也不会执行您认为它执行的操作。发生这种情况是因为
and
和or
运算符用作“真值判定器”,并且对字符串有稍微奇怪的行为。本质上,返回值是最后一个要计算的值,无论它是字符串还是其他值。看看这个行为:后一个值被分配给我们赋予它的变量。您正在寻找的是一种迭代一个或一组字符串的方法,并确保所有字符串都为true。为此,我们使用
all(iterable)
函数。假设情况属实,下面是您将收到的示例:
atmip9wb4#
您想知道
test1
和test2
是否在列中的某个位置。所以
df['col_name'].str.contains('test1').any() & df['col_name'].str.contains('test2').any()
。ffscu2ro5#
这是我的第一个答复)
试试我的功能。它搜索一个被空格分隔的字符串中的所有字母。它非常适合我。