Строка панд содержит и заменяет - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть следующий фрейм данных

         A            B
0        France        United States of America
1        Italie        France
2        United Stats  Italy

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

Пример: для слова Italie в столбце A у меня естьвзять Ital, а затем поискать в B, можем ли мы его найти.Затем я хочу заменить Italie его аналогичным словом Italy.

Я пытался сделать for с str.contains функцией

Но все равно не могу взять только первые 4буквы.

Ожидаемый результат:

         A                         B
0        France                   United States of America
1        Italy                    France
2        United Stats of America  Italy

Чтобы подвести итог, я ищу исправляющие значения в столбце A, чтобы они стали похожи на значения в столбце b

1 Ответ

0 голосов
/ 28 декабря 2018

Решение от нечеткой спички - fuzzywuzzy

from fuzzywuzzy import process

def fuzzyreturn(x):
    return [process.extract(x, df.B.values, limit=1)][0][0][0]


df.A.apply(fuzzyreturn)
Out[608]: 
0                      France
1                       Italy
2    United States of America
Name: A, dtype: object
df.A=df.A.apply(fuzzyreturn)
...