python - Pandas set value in groupby -


i have dataframe...

>>> df = pd.dataframe({ ...            'letters' : ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'],  ...            'is_min' : np.zeros(9), ...            'numbers' : np.random.randn(9) ... })      is_min  letters numbers 0   0             0.322499 1   0            -0.196617 2   0            -1.194251 3   0       b       1.005323 4   0       b      -0.186364 5   0       b      -1.886273 6   0       c       0.014960 7   0       c      -0.832713 8   0       c       0.689531 

i set 'is_min' col 1 if 'numbers' minimum value column 'letters'. have tried , feel close...

>>> df.groupby('letters')['numbers'].transform('idxmin')  0    2 1    2 2    2 3    5 4    5 5    5 6    7 7    7 8    7 dtype: int64 

i having hard time connecting dots set val of 'is_min' 1.

pass row labels loc , set column:

in [34]: df.loc[df.groupby('letters')['numbers'].transform('idxmin'), 'is_min']=1 df  out[34]:    is_min letters   numbers 0       1       -0.374751 1       0        1.663334 2       0       -0.123599 3       1       b -2.156204 4       0       b  0.201493 5       0       b  1.639512 6       0       c -0.447271 7       0       c  0.017204 8       1       c -1.261621 

so what's happening here calling loc select rows returned transform method , these set 1 desired.

not sure if matters call unique row labels without repetition may faster:

df.loc[df.groupby('letters')['numbers'].transform('idxmin').unique(), 'is_min']=1 

Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -