2016-03-22 2 views
0

У меня есть набор данных, который выглядит примерно так.проверить, если одна строка содержит другую подстроку в python

**name**  **url**    **title** 
Microsoft asdfgaethgaetgh Microsoft Is a big company 
Apple  aeiurghp   iphone is a Apple product 
Google  iailsu   Yahoo, Bing Profit Rises 

Я хотел бы использовать флаг, где «True» будет, если значение ячейки «имя» присутствует в значении ячейки «название». В противном случае, «False»

Я использую что-то вроде этого

df['flag'] = (df.name).isin(df.title) 

Но это дает все флаги, как «False», whereaas первых два флага должен быть «True»

Как могу я позаботься об этом?

+3

Что такое 'isin'? Просто используйте оператор 'in':' 'Microsoft 'в' Microsoft - большая компания' – poke

ответ

1

Это также может быть использован:

criteria = lambda row : row['name'] in row['title'] 
df['flag'] = df.apply(criteria, axis =1) 
0

Вы можете использовать df['flag'] = True if df.name in df.title else False код использует одну строку, если другое условие

+2

Как показывает ответ denis, нет необходимости указывать значения (' True' и 'False' в этом случае) для того, что уже разрешено к этим значениям. – TigerhawkT3

+0

Я думал, что это было более представительным :) –

+0

Это так же репрезентативно, как 'print ('alice', если usr_name == 'alice' else 'bob', если usr_name == 'bob' else 'charlie' if usr_name == 'charlie' else ...) '. Другими словами, нет. – TigerhawkT3

0

isin будет работать только если вы хотите искать name в списке имен. Для поиска подстроки используйте str.contains вместо

df.title.str.contains(df.name) 
0

Пример:

if df[name] in df[title]: 
         return true 
0

Ваш код должен быть, как этот

df['flag'] = (df.name in df.title) 
Смежные вопросы