#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
столбца