我想根据其值是否包含(即具有子字符串)字符串列表中的任何字符串来返回列中的值。
例如,
values = ['dog', 'cat', 'ant']
df = pd.DataFrame({'col1': ['dog', 'cat', 'fox', 'monkey', 'antelope'], 'col2': [3, 4, 1, 6, 9]})
我知道,如果我想比较一个子字符串,我可以:
df[df['col1'].str.contains('dog')
如果我知道完整的值(而不只是一个子字符串),我可以这样做:
df.loc[df['col1'].isin(values)]
但是,我不确定如何结合这两个功能。
我以为我可以循环过来。
def func(data):
for x in values:
if x in data:
return True
return False
df['include'] = df.apply(func)
但这是行不通的(我的专栏只是'NaN'值)-老实说,似乎有更好的方法。