Специальное удаление дубликатов из фрейма данных - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь удалить дубликаты строк, но с некоторыми специальными условиями. Входные данные, как показано ниже: я хочу удалить дубликаты строк. Я должен сравнить все столбцы и, следовательно, я должен отсортировать кадр данных на основе CODE, и, следовательно, я могу сравнить строки. Если значения ячеек одинаковы (необходимо игнорировать верхний и нижний регистр при сравнении столбца CITY) и если в столбце COMPANY есть и BELL, и MAS, тогда мне нужно выбрать с BELL. Спасибо.

NAME    CODE   STATE   CITY       COMPANY
abc     109    TN      Trichy     BELL
abc     109    TN      Salem      MAS
pen     9      TN      Mdu        BELL
pen     9      TN      MDU        MAS
hat     10     TN      Karur      MAS
mat     89     TN      Hosur      MAS
mat     89     TN      Hosur      BELL
paper   77     TN      Nyl        BELL
stone   98     TN      Nyl        BELL
stone   98     TN      Nyl        MAS

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

NAME    CODE   STATE   CITY       COMPANY
abc     109    TN      Trichy     BELL
abc     109    TN      Salem      MAS
pen     9      TN      Mdu        BELL
hat     10     TN      Karur      MAS
mat     89     TN      Hosur      BELL
paper   77     TN      Nyl        BELL
stone   98     TN      Nyl        BELL

1 Ответ

2 голосов
/ 22 января 2020

Вы можете попробовать следующие шаги:

  1. Преобразование столбца CITY в нижний регистр

  2. Сортировка данных по КОМПАНИИ (учитывая, что вы нужно сохранить один колокол)

  3. удаление дубликатов на основе других столбцов, кроме КОМПАНИИ

    data.CITY =data.CITY.str.lower()
    data.sort_values(by='COMPANY',inplace=True)
    data.drop_duplicates(subset=['NAME','CODE','STATE','CITY'],keep="first")
    

Надеюсь, это поможет.

...