Получение совпавших идентификаторов записей в библиотеке recordlinkage - PullRequest
0 голосов
/ 18 сентября 2018

Я пробовал этот пример: https://recordlinkage.readthedocs.io/en/latest/notebooks/data_deduplication.html

Ниже приведен фрагмент кода:

import recordlinkage
from recordlinkage.datasets import load_febrl1

dfA = load_febrl1()

# Indexation step
indexer = recordlinkage.Index()
indexer.block(left_on='given_name')
candidate_links = indexer.index(dfA)

compare_cl = recordlinkage.Compare()

compare_cl.exact('given_name', 'given_name', label='given_name')
compare_cl.string('surname', 'surname', method='jarowinkler', threshold=0.85, label='surname')
compare_cl.exact('date_of_birth', 'date_of_birth', label='date_of_birth')
compare_cl.exact('suburb', 'suburb', label='suburb')
compare_cl.exact('state', 'state', label='state')
compare_cl.string('address_1', 'address_1', threshold=0.85, 
label='address_1')

features = compare_cl.compute(candidate_links, dfA)
matches = features[features.sum(axis=1) > 3]
print(len(matches))

Теперь я хотел бы отдельно напечатать подходящие идентификаторы записи. Я пыталсяперечисление имен столбцов 'совпадений', но record_id не является его частью, и я не могу найти способ сделать это (я просто хочу record_ids отдельно)

Есть лиспособ получения record_ids и, возможно, либо распечатать его отдельно, либо сохранить его в виде списка или массива?

1 Ответ

0 голосов
/ 18 сентября 2018

Не забывайте, что у фрейма данных Pandas есть «индекс» в дополнение к его столбцам данных.Обычно это один «дополнительный» столбец целых чисел или строк, но возможны более сложные индексы, например, «многоиндексный», состоящий из более чем одного столбца.

Это можно увидеть, если вы print(matches.head()),Первые два столбца имеют имена, которые слегка смещены, поскольку они не являются столбцами данных;они являются столбцами в самом индексе.Этот индекс фрейма данных на самом деле является мультииндексом, содержащим два столбца: rec_id_1 и rec_id_2.

. Результат из load_febrl кодирует идентификатор записи как индекс dfA.Compare.compute сохраняет индексы входных данных: вы всегда можете ожидать, что индексы исходных данных будут сохранены как многоиндексные.

Индекс фрейма данных сам по себе может быть доступен с помощью DataFrame.index атрибут.Это возвращает Index объект (из которых MultiIndex является подклассом ), который в свою очередь может быть преобразован следующим образом:

  • Index.tolist(): преобразовать в list его элементов;MultiIndex становится list из tuple s
  • Index.to_series(): преобразовать в Series его элементов;MultiIndex становится Series из tuple с
  • Index.values: доступ к базовым данным как NumPy ndarray;MultiIndex становится ndarray из tuple с.
  • Index.to_frame(): преобразовать в DataFrame, со столбцами индекса в качестве столбцов фрейма данных

Таким образом, вы можетебыстро получить доступ к идентификаторам записей с помощью matches.index или экспортировать их в список с помощью matches.tolist().

. Вы также можете использовать matches.reset_index(), чтобы превратить столбцы индекса обратно в обычные столбцы данных.

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