Определите, содержат ли элементы последовательности pandas элементы другой последовательности в качестве подстрок - PullRequest
1 голос
/ 06 апреля 2020

Учитывая следующее:

s1 = pd.Series(["onee", "twoo", "threee", "fourr"])
s2 = pd.Series(["one", "two"])

Как найти s3 как [True, True, False, False].

Это определяется для каждого элемента в s1, если элемент из s2 - это подстрока, соответствующая элементу в s3 должна быть True.

Примечание. Размеры списка могут варьироваться, поэтому решение, которое зависит от наличия заданного количества элементов в s2 не жизнеспособен.

У меня есть следующее, которое, я думаю, работает, но я не думаю, что это очень хорошее решение

s1 = pd.Series(["onee", "twoo", "threee", "fourr"])
s2 = pd.Series(["one", "two"])

res = []
for s_2 in s2:
    for s_1 in s1:
        if s_2 in s_1:
            res.append(1)
        else:
            res.append(0)

solution = np.array(res).reshape((2, len(s1))).sum(axis=0)


, которое приводит к

array([1, 1, 0, 0])

1 Ответ

1 голос
/ 06 апреля 2020

Использование

s1.str.contains('|'.join(s2.str.replace('|', ''))).astype(int).values

Вывод

array([1, 1, 0, 0])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...