Я хочу вернуть значения в столбце, основываясь на том, содержит ли его значение (то есть содержит подстроку) какую-либо строку в списке строк.
Например,
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') - и, честно говоря, похоже, что есть лучший способ.