Принимать положительное значение для первичного ключа в случае дубликатов

#python #python-3.x #pandas

#python #python-3.x #pandas

Вопрос:

У меня есть фрейм данных df

 Key1   Key2    Value
K11    K21      V1
K11    K21     -V1
K13    K23      V2
K13    K23     -V2  
 

Теперь, например, для одной и той же комбинации ключей K11, K21 у нас есть 2 значения, одно отрицательное, одно положительное. Как взять только положительное значение из этого df

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

  Key1   Key2    Value
 K11    K21      V1
 K13    K23      V2
 

Обратите внимание, что для моего df оба ключа вместе являются первичным ключом (комбинация Key1 и Key2 должна быть уникальной).

Ответ №1:

Разве это не просто drop_duplicates с sort_values :

 df.sort_values('Value').drop_duplicates(['Key1','Key2'], keep='last')
 

Или вы также можете сделать groupby

 df.groupby(['Key1','Key2'], as_index=False).max()
 

Комментарии:

1. Что делать, если у нас более 1 столбца значений, и нам нужен только столбец max of value. Допустим, у нас были дополнительные столбцы Value1 , Value2 , Value3 и мы хотели сохранить положительное значение для Value столбца