Как сравнить два списка строк в кадре данных для любых совпадений, чтобы получить True или False в Python? - PullRequest
1 голос
/ 09 июля 2019

У меня есть два столбца в кадре данных, которые состоят из списков строк. Я хочу сравнить все элементы в списках, чтобы увидеть, есть ли совпадения, и вернуть столбец True / False (или любой другой флаг), чтобы выделить совпадения.

Я пытался сделать это, создав наборы и сравнив их по строкам, но я продолжаю получать «False», когда он должен возвращать «True» («a» находится в столбце 1 и 2, поэтому должно быть «True») , Как я могу сравнить эти два списка?

df = pd.DataFrame({'one': [['a','bb','b','v'], ['aa','b','c','e']],
                  'two': [['b','aa','a','d'],['b','w','f']]})

df['one'] = df.apply(lambda row: set(row['one']), axis=1)
df['two'] = df.apply(lambda row: set(row['two']), axis=1)

df['check'] = df.apply(lambda row: row['one'] in row['two'], axis=1)

print(df)

Я ожидаю новый столбец с выводом True, поскольку в списке есть соответствующие элементы.

1 Ответ

1 голос
/ 09 июля 2019

Используйте следующее в apply

lambda row: bool(row['one'] & row['two']), axis=1

Здесь, поскольку row['one'] и row['two'] уже преобразованы в набор, & выполняет операцию пересечения между row['one'] и row['two']

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