У меня есть фреймворк pandas с двумя столбцами. Мне нужно определить, входит ли строковое значение из одного столбца в строковое значение другого столбца. Второй столбец может быть «одним значением», например «значение1», или несколькими элементами, разделенными символом «/» в строке, например: «значение1 / значение2 / значение3».
Для каждой строки мне нужно определить, присутствует ли строка в другой строке в той же строке, чтобы значение 'value1' в 'value1 / value2 / value3' оценивалось как True.
Мои попытки до сих пор не проверяются в каждой строке, и я просто смотрю, присутствует ли первая строка столбца во ВСЕХ строках столбца 2.
Вот пример:
import pandas as pd
df = pd.DataFrame({'a':['a','b','c','d','e'],
'b':['a/b','c/d','c/a','a/b','e']})
df['a'].isin(df['b'])
Ожидаемый результат оценивается как:
True
False
True
False
True






[a in b for a, b in zip(df.a, df.b)]
[True, False, True, False, True]
df.assign(In=[a in b for a, b in zip(df.a, df.b)])
a b In
0 a a/b True
1 b c/d False
2 c c/a True
3 d a/b False
4 e e True
from numpy.core.defchararray import find
a, b = df.values.astype(str).T
find(b, a) >= 0
array([ True, False, True, False, True])
df.assign(In=find(b, a) >= 0)
a b In
0 a a/b True
1 b c/d False
2 c c/a True
3 d a/b False
4 e e True
Да, молодец. Не знаю, почему я не подумал об этом! Я дам вам ответ здесь, как только это позволит мне.