Нахождение общих слов (пересечение) в каждой строке 2-х данных - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть два кадра данных в https://docs.google.com/spreadsheets/d/1dHoVyEAi0SrY3QPgxRYXjl7CYkRvv0LVV_re38523ck/edit?usp=sharing

Я хотел сравнить слова (пересечение) от Dataframe1['Final_Text'] до Dataframe2['Text'].Строка 1 из Dataframe2['Final_Text'] должна сравниваться с каждой строкой Dataframe1['Text'], аналогично строка 2 Dataframe2['Final_Text'] с каждой строкой Dataframe1['Text'] и показываться на.

Пожалуйста, предложите возможные пути.

До сих пор я сделал для строки

lexicon = set().union(*df2['Final_Text'].str.split())

Вывод ->

{'study', 'cell' , 'response', 'patient, 'effect','activity' 'cell,', 'protein,', 'result,'}

Пустые данные

data={'activity', 'cell','response','Study','Maths', 'DNA'}

c=data.intersection(lexicon)
print(c)

Окончательный вывод ---> 'cell'

Здесь вместо data я хочу проверить с каждой строкой Dataframe2['Text'].

1 Ответ

0 голосов
/ 24 декабря 2018

Вы можете выполнить итерацию по каждой строке кадра данных, используя DataFrame.iterrows: , см. Документацию здесь .Это даст индекс строк и содержимое самой строки.Это позволяет вам делать следующее:

intersections = dict()
for index2, row2 in Dataframe2.iterrows():
    for index1, row1 in Dataframe1.iterrows():
        words1 = set(str(row1[1]).split())
        words2 = set(str(row2[1]).split())
        matching_words = list(words2.intersection(words1))
        rows = 'DF1:{} DF2:{}'.format(index1, index2)
        intersections[rows] = matching_words

print(intersections)

>> {'DF1:0 DF2:0': [], 'DF1:1 DF2:0': [… ...}

Это создаст словарь, в котором строки, содержащие два индекса строки, являются ключами, а соответствующие пересечения являются значениями, сохраняя и упорядочивая все ваши выходные данные для дальнейшего использования.

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