Я застрял на том, что изначально считал простой задачей, довольно давно. Здесь я буду использовать пример данных, так как фактические данные о проблемах намного более беспорядочные (и конфиденциальные). По сути, у меня есть два столбца, каждый из которых содержит строки. Я хочу проверить для каждой строки столбца 'substring', является ли она подстрокой какой-либо из строк столбца 'string':
s1 = ['good', 'how', 'hello', 'start']
s2 = ['exit', 'hello you','where are you', 'goodbye']
test = pd.DataFrame({'substring':s1, 'string':s2})
>>> test
string substring
0 exit good
1 hello you how
2 where are you hello
3 goodbye start
По сути, мне нужен индикатор для каждой строки, если столбец A если это подстрока в любом месте столбца B:
>>>test
string substring C
0 exit good True
1 hello you how False
2 where are you hello True
3 goodbye start False
Я, кажется, перепробовал много вещей, и я только что потерял.
Я пытался перебирать строки:
sub_test = pd.DataFrame(columns=test.columns)
for index, row in test.iterrows():
a = row['substring']
delta = test[test['string'].str.contains(a)]
if len(delta.index > 1):
sub_test = pd.concat([sub_test, delta])
Что дает мне некоторые пути и возвращает:
>>>sub_test
string substring
3 goodbye start
1 hello you how
Я думаю, что есть способ сделать это с помощью лямбды, но я не добился успеха:
test['C'] = test.apply(lambda row: row['substring'] in policies['substring'], axis = 1)
Любая помощь будет оценена. Спасибо