Определение индекса совпадающих строк в списках разных размеров - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть списки ключевых слов и списки данных, которые я хочу сравнить. Я хотел бы, чтобы возвращение было float64 из 1, когда любая из строк совпадает.

import pandas as pd
import numpy as np

data=[['history', 'brain', 'scale', 'imaging', 'patterned', 'optogenetics', 'cellular', 'resolution'], ['infectious', 'fun', 'energy', 'iron', 'oxide', 'nanoparticles'], ['billie', 'holiday', 'project', 'bridging', 'art', 'local', 'history', 'community', 'wellness']]
keywords=[['history', 'literature', 'arts', 'humanities', 'philosophy', 'nan'], ['energy', 'optimization', 'systems', 'healthcare', 'policy', 'public', 'health']]
match=np.zeros(shape=(len(data),len(keywords)))
match=pd.DataFrame(match)

data=pd.DataFrame(data)
keywords=pd.DataFrame(keywords)
compare=data.isin(keywords)

В настоящее время он находит только первый пример «истории», но есть второй и не находит термина «энергия». Я хотел бы, чтобы результат был следующим:

print(match)
     0    1
0  1.0  0.0
1  0.0  1.0
2  1.0  0.0

Я пробовал несколько разных методов itertools и без удачи перечислял циклы, любые мысли будут с благодарностью. Спасибо!

1 Ответ

0 голосов
/ 27 февраля 2020

просто требуется куча циклов, лучшие идеи приветствуются!

for z in range(len(data)):
    for x in data[z]:
        for q in range(len(keywords)):
            for s in keywords[q]:
                if x==s:
                    match.iloc[z,q]+=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...