У меня есть две строки столбцы в моем панды набореКак сравнить две строковые переменные в пандах?
name1 name2
John Doe John Doe
AleX T Franz K
и мне нужно, чтобы проверить, равен ли name1
name2
. Наивный способ я использую сейчас с помощью простой маски
mask=df.name1==df.name2
Но проблема в том, что там может быть неверной маркировкой строки (таким образом, что не является предсказуемым - данные слишком большие), которые препятствуют точной совпадение.
Например, «John Doe» и «John Doe» не совпадают. Конечно, я обрезал, опустил свои струны, но другие возможности остаются.
Одна из идей заключается в том, будет ли name1
содержать в name2
. Но, похоже, я не могу использовать str.contains
с другой переменной в качестве аргумента. Любые другие идеи?
Большое спасибо!
EDIT: использование isin
дает нечувствительные результаты. Пример
test = pd.DataFrame({'A': ["john doe", " john doe", 'John'], 'B': [' john doe', 'eddie murphy', 'batman']})
test
Out[6]:
A B
0 john doe john doe
1 john doe eddie murphy
2 John batman
test['A'].isin(test['B'])
Out[7]:
0 False
1 True
2 False
Name: A, dtype: bool
Привет @edchum это а не дубликат вопроса, который вы упомянули. –
Итак, вы после чего-то вроде 'df ['name1']. Str.lower() == df ['name2']. Str.lower()'? – EdChum
не очень, потому что я считаю, что идеальное равенство порождает слишком много ложных негативов в данных. проверка того, содержится ли имя1 где-то в имени2, кажется более подходящим –