I have a dataframe that looks like this
Email cq_closed_deal total_leads region dept
johnq@abc.com 1 4 ANZ salesA
grega@abc.com 0 0 ASEAN salesB
bruce@abc.com 1 6 ANZ salesA
danyi@abc.com 0 2 JAPAN salesC
jackc@abc.com 1 10 JAPAN salesC
kylev@abc.com 1 2 ASEAN salesB
petel@abc.com 0 0 ANZ salesB
sanja@abc.com 1 0 ASEAN salesB
andyu@abc.com 0 0 JAPAN salesA
sandk@abc.com 1 1 ANZ salesA
I am trying to create a new column to store the mean of the total_leads (groupby region and dept) for those in the 95% percentile of total_leads where this mean values is only calculated based on those with more than 0 for the cq_closed_deal and more than 0 for total_leads
The resulting output should look something like this
Email cq_closed_deal total_leads region dept top_leads_avg
johnq@abc.com 1 4 ANZ salesA 6
grega@abc.com 0 0 ASEAN salesB 2
bruce@abc.com 1 6 ANZ salesA 6
danyi@abc.com 0 2 JAPAN salesC 10
jackc@abc.com 1 10 JAPAN salesC 10
kylev@abc.com 1 2 ASEAN salesB 2
petel@abc.com 0 0 ANZ salesB 0
sanja@abc.com 1 0 ASEAN salesB 2
andyu@abc.com 0 0 JAPAN salesA 0
sandk@abc.com 1 1 ANZ salesA 6
What i've done so far is to use the code below, but the calculation of the mean of the 95 percentile for total_leads applies to all rows instead of those with cq_close_deal > 0 and total_leads > 0
df['top_leads_avg'] = df.groupby(['region','dept'])['total_leads'].transform('quantile',0.95).mean()
Is there something else i need to add? appreciate any form of help, thank you.