Python - это один строковый столбец в другом?

1

У меня есть рамка данных pandas с двумя столбцами. Мне нужно определить, находится ли строковое значение из одного столбца в строковом значении другого столбца. Второй столбец может быть "единственным значением", например "value1", или может быть несколько элементов, разделенных символом "/" в строке, например: "value1/value2/value3".

Для каждой строки мне нужно определить, присутствует ли строка в другой строке в той же строке, так что значение "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
Теги:
string
pandas

1 ответ

3
Лучший ответ

постижение

[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
  • 1
    Да, гениально. Не уверен, почему я не подумал об этом! Дадим вам ответ здесь, как только позволит.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню