Python Pandas group by function -
i have table
uname sid usage 0 ahmad 5 1 ahmad 7 2 ahmad 10 3 ahmad b 2 4 mohamad c 6 5 mohamad c 7 6 mohamad c 9
i want group uname , side, , have usage column = group.max
- group.min
. if group count 1
return group max
the out put should
uname sid usage 0 ahmad 5 1 ahmad b 2 2 mohamad c 3
first, use agg
grab min
, max
, , size
of each group.
multiply min
size > 1
. when is, equal min
, else 0
. subtract max
.
d1 = df.groupby(['uname', 'sid']).usage.agg(['min', 'max', 'size']) d1['max'].sub(d1['min'].mul(d1['size'].gt(1))).reset_index(name='usage')
Comments
Post a Comment