Получить максимальное значение, соответствующее комбинации первичных ключей

#python #python-3.x #pandas

#python #python-3.x #pandas

Вопрос:

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

 Key1   Key2    Take  Value    Value2   Value3
K11    K21     Yes     1000     10       5   #Include: Take is Yes, Value column is positive
K11    K21     Yes    -1000     10       5  #Remove:Value column is negative
K13    K23     Yes     2000     20       2   #Include:Take is Yes, Value positive
K13    K23     Yes    -2000     20       2  #Remove:Value is negative
K41    K44     No      4000     100      590  #Remove: Take is No
K41    K44     No     -4000     100      590  #Remove:Value negative, Take NO
 

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

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

  Key1   Key2   Take       Value     Value2   Value3
 K11    K21     Yes       1000      10       5
 K13    K23     Yes       2000     20       2
 

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

   df_trial=(df['Take']=='Yes).groupby(['Key1','Key2'], as_index=False).max('Value')
 

Это не работает . Я получаю typeerror TypeError: as_index=False only valid with DataFrame

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

1. Хороший момент, отредактированный сейчас .. Столбец значений на самом деле является целым числом. были взяты фиктивные данные

2. Это работает: df.loc[df.Take.eq("Yes") amp; (np.sign(df.Value) >= 0)] однако вы можете захотеть добавить больше строк для улучшения тестов для сценариев, в которых есть несколько yeses и положительных значений

3. Я хочу извлечь максимальное значение из положительных значений. Вернет ли этот код максимальное положительное значение?