python - pandas find max value in groupby and apply function -


i've got dataframe df following:

h,nu,city 1,15,madrid 3,15,madrid 3,1600,madrid 5,17615,madrid 2,55,dublin 4,5706,dublin 2,68,dublin 1,68,dublin 

i find max value / city of nu column. find corresponding values of h , add new column df['h2'] = df['h']/max(h/city). far tried:

d = df.groupby('city').apply(lambda t: t[t.nu==t.nu.max()]) 

which correctly returns:

          h     nu    city city                              dublin 5  4   5706  dublin madrid 3  5  17615  madrid 

how may set maximum h value (4 dublin , 5 madrid) constant / city in order apply function on dataframe? expected df appear as:

h,nu,city,h2 1,15,madrid,0.2 3,15,madrid,0.6 3,1600,madrid,0.6 5,17615,madrid,1.0 2,55,dublin,0.5 4,5706,dublin,1.0 2,68,dublin,0.5 1,68,dublin,0.25 

using .idxmax, may obtain row has highest nu value each city:

>>> = df.groupby('city')['nu'].transform('idxmax').values >>> df['h2'] = df['h'] / df.loc[i, 'h'].values >>> df    h     nu    city    h2 0  1     15  madrid  0.20 1  3     15  madrid  0.60 2  3   1600  madrid  0.60 3  5  17615  madrid  1.00 4  2     55  dublin  0.50 5  4   5706  dublin  1.00 6  2     68  dublin  0.50 7  1     68  dublin  0.25 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -