Pandas: сравнить строковые столбцы из двух разных фреймов данных разных размеров

У меня есть два фрейма данных разных размеров, и у каждого есть столбец предложений, как показано ниже:

import pandas as pd

data1 = {'text':  ['the old man is here','the young girl is there', 'the old woman is here','the young boy is there','the young girl is here','the old girl is here']}

df1 = pd.DataFrame (data, columns = ['text'])

и второй фрейм данных:

data2 = {'text':  ['the old man is here','the old girl is there', 'the young woman is here','the young boy is there']}

df2 = pd.DataFrame (data, columns = ['text'])

так что, как вы можете видеть, в обоих фреймах данных есть несколько похожих предложений. то, что я хотел бы получить в качестве вывода, - это столбец в df1, который будет указывать true, если две строки похожи, и false в противном случае:

desired output:
text                        result
'the old man is here'       True
'the young girl is there'   False
'the old woman is here'     False
'the young boy is there'    True
'the young girl is here'    False
'the old girl is here'      False

Я пытался:

df1['result'] = np.where(df1['text'].str == df2['text'].str, 'True', 'False')

но когда я проверяю, он возвращает только ложь и не «истину»

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
730
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте Series.isin, если нужно логическое значение True/False:

df1['result'] = df1['text'].isin(df2['text'])
print (df1)
                      text  result
0      the old man is here    True
1  the young girl is there   False
2    the old woman is here   False
3   the young boy is there    True
4   the young girl is here   False
5     the old girl is here   False

работает как:

#removed '' from 'True', 'False' for boolean
df1['result'] = np.where(df1['text'].isin(df2['text']), True, False)

Ваше решение создает строки, поэтому, если вам нужно использовать его для фильтрации, это не удастся:

df1['result'] = np.where(df1['text'].isin(df2['text']), 'True', 'False')

Другие вопросы по теме