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
Post a Comment