#python #pandas
Вопрос:
Надеюсь, у вас сегодня хороший день. В настоящее время я работаю с чрезвычайно грязным фреймом данных, содержащим Имя, Фамилию и Отчество. Одна из проблем, которую я пытаюсь решить, выглядит следующим образом:
имя | фамилия |
---|---|
Джеймс Агню | Связь |
Джеймс | Связь |
Еще одна похожая проблема, которую я пытаюсь решить, выглядит следующим образом:
имя | фамилия |
---|---|
Варенье | Связь |
Джеймс | Связь |
С нетерпением жду ваших идей.
Спасибо!
Редактировать: К вашему сведению, чтобы упростить жизнь, у меня уже есть данные, сгруппированные по уникальному адресу. Итак, две строки будут иметь один адрес, еще две или три строки будут иметь другой адрес и так далее.
Комментарии:
1. Используйте
df.drop_duplicates('Address')
, чтобы сохранить только один экземпляр (Имя, Фамилия)?2. Не так-то просто. У меня есть другие строки с аналогичной проблемой (пожалуйста, см. Мой другой пост). Я мог бы отбросить строки, которые являются чистыми дубликатами, а затем отбросить строки, которые являются перекрестными дубликатами.
3. Я пытался найти решение, но это занимает слишком много времени, потому что вам нужно проверить комбинации NxN. Извините 🙁
Ответ №1:
Если мы просто хотим проверить, что оба элемента в строке 2 содержатся в соответствующих элементах строки 1, нам просто нужен один оператор if
row1 = ["James", "Bond"]
row2 = ["Jam", "Bo"]
if row2[0] in row1[0] and row2[1] in row1[1]:
print("Similar!")
else:
print("Not Similar!")
Если вы хотите проверить противоположный случай (что ro1 находится в строке 2), просто создайте второй оператор if, в котором термины «строка 1» и «строка 2» поменялись местами.
Комментарии:
1. Что, если мы хотим проверить наличие подобных случаев во всем фрейме данных?
2. @IsaacA Вам придется сравнивать каждую строку с каждой другой строкой. Вложенный цикл for, проходящий через каждую возможную комбинацию из 2 строк, будет работать.
Ответ №2:
Это не такая простая проблема. Чтобы проверить, являются ли 2 строки «похожими», вы должны ввести алгоритм неевклидова расстояния. Я имею в виду, что вы должны определить функцию подобия и «понять» расстояние между строками.
медуза-это библиотека, созданная для решения этих проблем
Другой подход состоит в том, чтобы собрать все имена и связать их с тезаурусом имен, подобных этому
Немного поискав, я нашел это
надежда может помочь