Issue
I have a dataframe which produces output as
COL1 COL 2 COL3
abc 143613948 143614469
abc 143613945 143614466
xyz 164859569 164901557
xyz 164859531 164900406
How can COL1 be grouped to derive a new column which is max(COL3) - min (COL2)?
Desired output will look like dataframe:
COL1 COL4
abc 524
xyz 42026
Solution
using agg
agg = df.groupby('COL1').agg(dict(COL2='min', COL3='max'))
(agg.COL3 - agg.COL2).reset_index(name='COL4')
COL1 COL4
0 abc 524
1 xyz 42026
using apply
df.groupby('COL1').apply(
lambda d: d.COL3.max() - d.COL2.min()).reset_index(name='COL4')
COL1 COL4
0 abc 524
1 xyz 42026
Answered By - piRSquared
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.