我有一个包含几个子字符串的列表,需要用它来识别列中至少包含一个子字符串的行。我有代码可以正确识别是否出现了一个字符串,但我无法让它识别列表。
df.Col1.str.contains('text')
正确地返回一个序列。然而,我真正想要的是使用列表来标识许多选项中的一个,并在包含任何选项时返回True。
list1 = ['text','Text','third',fourth']
for item in list1:
df.Col1.str.contains(item)
返回四个序列,这对我的使用不好。
我也试过:
for item in list:
if df.Col1.str.contains(item) == True:
df['Check'] = 'True'
但它返回'Series的真值不明确'。
我需要做什么修改才能让它在列表而不是单个字符串上工作?
如果列表中有一个选项,则新数据框列的最终结果将是值“True”;如果字符串不包含任何列表选项,则结果为“Nothing”。
1条答案
按热度按时间yv5phkfx1#
首先,要回答您的问题,您可以使用以下方法(),为Pandas系列获取一个布尔值。它等同于逻辑"or",也就是说,如果系列中的任何一个值为真,则为真,否则为假。第二,不应该使用"list"作为变量名,因为它是一个需要重写的python内置函数,这是不好的做法。第三,我不知道你想用这句台词来达到什么目的
因为你在每一行的"Check"列中写上"True"来表示每次if条件为真,但是我假设这就是你想要的。
您可以使用
因此,您的代码应该如下所示: