Pandas groupby conditional subtraction Pandas groupby conditional subtraction pandas pandas

Pandas groupby conditional subtraction


Use

In [591]: df['d'] = df['c'] - df.loc[df.groupby('a')['b'].transform('idxmin'), 'c'].valuesIn [592]: dfOut[592]:   a  b  c  d0  R  1  2  01  R  2  4  22  R  3  6  43  R  4  8  64  S  0  5  05  S  1  4 -16  S  2  1 -47  S  3  3 -2


conditional_c = df.groupby('a').b.idxmin().map(df.c)df.assign(d=df.c - df.a.map(conditional_c))   a  b  c  d0  R  1  2  01  R  2  4  22  R  3  6  43  R  4  8  64  S  0  5  05  S  1  4 -16  S  2  1 -47  S  3  3 -2


Not quit efficient, but work

df['d']=df.groupby('a').apply(lambda x : x['c']-x['c'][x['b']==x['b'].min()].values).valuesdfOut[1305]:    a  b  c  d0  R  1  2  01  R  2  4  22  R  3  6  43  R  4  8  64  S  0  5  05  S  1  4 -16  S  2  1 -47  S  3  3 -2