Во-первых, ваша логика не имеет большого смысла, как указано, поскольку у вас есть несколько кол-во на один идентификатор.так что группировка по первым означает, что вы не можете напрямую определить, является ли Qty
, что, как говорится, ваш производный вывод, кажется, хочет, чтобы вы выбрали самую маленькую цену поставщика и наибольшее количестводоступность среди тех, где qty> = кол-во в наличии.
, если это так, вы можете использовать
df1 = df.loc[df['Qty'] >= df['Qty Avail'] ,['Id','Qty','Vendor Price']].groupby(['Id', 'Qty']).min()
df2 = df.loc[df['Qty'] >= df['Qty Avail'] ,['Id','Qty','Qty Avail']].groupby(['Id', 'Qty']).max()
, а затем присоединиться к ним по id
df3 = pd.merge(df1, df2, left_index = True, right_index = True)