Python - это один строковый столбец в другом? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть пандас с двумя столбцами. Мне нужно определить, находится ли строковое значение из одного столбца в строковое значение другого столбца. Второй столбец может представлять собой «одно значение», например «значение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

1 Ответ

0 голосов
/ 06 сентября 2018

Постижение

[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

Numpy

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...