Как отфильтровать дубликаты на основе различных фильтров - PullRequest
1 голос
/ 15 апреля 2019

У меня есть кадр данных со столбцами Буквы, Цифры и Цифры

df = pd.DataFrame({'Letters':['AB', 'XY', 'ZW','ZW','XY' ],
               'Numbers': [1234, 4, 333, 333, 4],
               'Digits': [32234, 32534, 4234, 4235, NaN]})

print(df)
  Letters  Numbers    Digits
0      AB     1234    32234   
1      XY        4    32534   
2      ZW      333    4234   
3      ZW      333    4235  
4      XY        4    NaN    

Я хотел бы отфильтровать дубликаты на основе определенных столбцов (здесь буквы и цифры) и выделить строки, в которых столбец имеет определенное значение (в данном случае, когда "Цифры" являются самыми большими или Nan)

Таким образом, результат будет

print(df)
  Letters  Numbers    Digits
0      AB     1234    32234   
1      XY        4    32534      
3      ZW      333    4235

1 Ответ

1 голос
/ 15 апреля 2019

Мы можем использовать sort_values с аргументом na_position, затем вызвать drop_duplicates:

(df.sort_values('Digits', na_position='first')
   .drop_duplicates(['Letters', 'Numbers'], keep='last')
   .sort_index())

  Letters  Numbers   Digits
0      AB     1234  32234.0
1      XY        4  32534.0
3      ZW      333   4235.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...