У меня есть фрейм данных и список
df = pd.DataFrame({'IDs':[1234,5346,1234,8793,8793],
'Names':['APPLE ABCD ONE','APPLE ABCD','NO STRAWBERRY YES','ORANGE AVAILABLE','TEA AVAILABLE']})
kw = ['APPLE ABCD', 'ORANGE', 'LEMONS', 'STRAWBERRY', 'BLUEBERRY', 'TEA COFFEE']
Я хочу создать новый столбец flag
, такой, что если в столбце Names
содержится ключевое слово из kw
, флаг будет равен 1, иначе 0.
Ожидаемый результат:
IDs Names Flag
0 1234 APPLE ABCD ONE 1
1 5346 APPLE ABCD 1
2 1234 NO STRAWBERRY YES 1
3 8793 ORANGE AVAILABLE 1
4 8793 TEA AVAILABLE 0
Я могу получить вывод, используя следующий код:
ind=[]
for idx, value in df.iterrows():
x = 0
for u in kw:
if u in value['Names']:
ind.append(True)
x = 1
break
if x == 0:
ind.append(False)
df['flag'] = ind
Есть ли альтернативный способ избежать цикла и сделать егоэффективнее?