Удаление строк в excel на основе сравнения (python, pandas) - PullRequest
0 голосов
/ 06 августа 2020

Я пытался сравнить два файла и удалить строки из файла2 на основе сравнения. Я хочу сохранить строку в файле2, если значение существует в обоих файлах в «Категории 2». если значение из файла2 не существует в файле1, удалите строку. Я изучал конкатенацию и удаление недубликатов, но я предполагаю, что есть более логичный подход к этому? Я также не могу найти ничего особенного c для сравнения фреймов данных и удаления строк, которые НЕ являются общими. Я в основном нахожу вещи, которые удаляют дубликаты и т. д. c. приветствуются любые указатели или новое направление решения этой проблемы. спасибо

также, если есть смысл удалить какие-либо заголовки в файле 1, такие как «Все списки» или другие категории, чтобы упростить задачу, я бы тоже не возражал.

df1 = pd.read_excel('file1.xlsx')
df2 = pd.read_excel('file2.xlsx')

#df1_i = df1.set_index(['Category 2'])
#df2_i = df2.set_index(['Category 2'])

output = df2[(df2['Category 2'].isin(df1['Category 2']))]
output

текущий вывод:

Empty DataFrame
Columns: [Title, Manager]
Index: []

файл1

All Lists
Category 1  Category 2  Category 3  Category 4  Category 5  Category 6                   
List 1                  
            element1        x   
            element2        x   
            element3        x   
            element4        x   
            element5        x   
List 2                  
            card1           x   
            card2           x   
            card3           x   
            card4           x   
            card5           x   
List 3                  
            box1            x   
            box2            x   
            box3            x   
            box4            x   
            box5            x

файл2

Category 2   Manager     quarter1    quarter2    quarter3    quarter4                total
element2       A           $          $           $           $                      $
notElement     B           $          $           $           $                      $
card3          C           $          $           $           $                      $
box4           D           $          $           $           $                      $
element3       E           $          $           $           $                      $
box1           F           $          $           $           $                      $
notElement     B           $          $           $           $                      $
notElement     C           $          $           $           $                      $             
card7          D           $          $           $           $                      $
element4       E           $          $           $           $                      $

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

Category 2   Manager     quarter1    quarter2    quarter3    quarter4                total
element2       A           $          $           $           $                      $
card3          C           $          $           $           $                      $
box4           D           $          $           $           $                      $
element3       E           $          $           $           $                      $
box1           F           $          $           $           $                      $
card7          D           $          $           $           $                      $
element4       E           $          $           $           $                      $

1 Ответ

1 голос
/ 06 августа 2020

используйте .isin:

df1_i = df1_i.reset_index()
df2_i = df2_i.reset_index()
output = df2_i[(df2_i['Category 2'].isin(df1_i['Category 2']))]
output
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...