#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. Я хочу извлечь максимальное значение из положительных значений. Вернет ли этот код максимальное положительное значение?