Я хочу сопоставить конкретную запись данных (диктонария / фрейм данных с 20 переменными) с возможной той же самой записью базы данных.
Поскольку не существует уникального идентификатора, а для некоторых записей много пропущенных значений, яхотел сделать «наивное» предположение. Означает, что я хочу посчитать все совпадающие значения построчно и взять первые 10 перспектив.
В настоящее время я преобразую словарь в список и использую .isin()
, чтобы получить количество совпадающих значений.
db['no_matches'] = db.isin(list_of_criterias).sum(1)
prospects = db.nlargest(10 ['no_matches'])
Однако мой подход вводит в заблуждение, так как я считаю совпадения независимо от порядка / имени столбца.
Означает, что если мое значение поиска, например, column1 = 'foo'
, оно также совпадает с'foo'
значений в моей базе данных, которые не находятся в column1
.
Есть ли способ подсчета совпадающих значений по строкам и учета порядка столбцов одновременно?
Спасибо.
Обновление:
Благодаря комментарию Quang Hoang Я передал соответствующий словарь в функцию .isin()
. Тем не менее, я получаю type error
.
In[9]: type(clean_criteria)
Out[9]: dict
db.isin(clean_criteria) #Throws Error
TypeError: only list-like or dict-like objects are allowed to be passed to DataFrame.isin(), you passed a 'str'