Как в датафрейме сравнить 2 столбца на наличие несовпадений более чем в 1 символ?
У меня есть датафрейм,
в нем есть df['x'] - столбец и df['y'] - столбец.
В этих столбцах, в каждой строке содержится по 7-8 символов. Нужно найти те, где различий больше, чем в 1 символ.
Ответы (1 шт):
Автор решения: MarianD
→ Ссылка
Создаем функцию
more1(), которая будет возвращатьTrueтолько тогда, кода в 2 числах более чем 1 различие:def more1(num1, num2): str1 = str(num1) str2 = str(num2) differences = 0 for digit1, digit2 in zip(str1, str2): if digit1 != digit2: differences += 1 if differences > 1: return True # более чем 1 различие return FalseСоставим из ее NumPy ufunc (т.е. универсальную функцию, которая будет работать не только с 2 числами, но и с 2 полями чисел, потому что у нас 2 серии — столбцы
"x"и"y"):import numpy as np ufunc_more1 = np.frompyfunc(more1, 2, 1) # 2 вводные поля, одно выводноеИспользуем эту функцию для фильтрации (только тех строк датафрейма, в которых числа в столбцах
"x"и"y"отличаются в более чем v 1 цифре):df[ufunc_more1(df.x, df.y)]
Вывод:
x y 3 4619391067 4619391607 8 3616303322 3606561956 10 6316281671 6305855298 11 6018329898 6004097862 12 8703909750 4106946873 13 6715517863 7503830261 15 7115173235 7115173325 18 8409278501 8409278602 19 2518579547 2501584754 20 515346646 512996363 21 4618976289 411036170 22 4611501430 4611501403 27 7819398970 7814030634
