Строка содержит между двумя df в python

Rahul Agarwal спросил: 03 ноября 2018 в 08:32 в: python

У меня есть два df с двумя строковыми столбцами, как показано ниже:

Df1: у оригинального df есть 2000 строк имен

Id    Name
1     Paper
2     Paper
3     Scissors
4     Mat
5     Cat
6     Cat

2nd Df: у оригинального df есть 1000+ Item_Name

Item_ID   Item_Name
1         Paper Bag
2         wallpaper
3         paper
4         cat cage

Мне нужны строки в столбце Name, которые находятся в столбце Item_Name

1-й подход : Используя str.contains:

я знаю, как сопоставить строку, если их столбец был один, а пару строк нужно сопоставить, как показано ниже:

df[df['Name'].str.contains("paper|cat", na=False)]

Но как это сделать, когда есть два столбца строки (имя и имя элемента) для сопоставления ?

2-й подход: Fuzzywuzzy

matched = []
for row in df1.index:
    name = df1.get_value(row,"Name")
    for columns in df2.index:
        item_name=df2.get_value(columns,"Item_Name")
        matched_token=fuzz.token_sort_ratio(name,item_name)
        if matched_token> 80:
            matched.append([name,item_name,matched_token])

Проблема будет в том, что он будет медленным, и мой желаемый результат будет немного больше, чем я получаю от fuzzywuzzy. Вывод выглядит следующим образом:

Id Name     Item_ID
1  Paper     1,2,3
2  Paper     1,2,3
3  Scissors  NA 
4  Mat       NA 
5  Cat       4
6  Cat       4 

Суммировать:

  1. Как сделать str.contains, если их два df с другое имя столбца
  2. Как преобразовать df, чтобы получить вышеуказанный вывод

0 ответов