I hv a data frame with 3 columns,
ID col1 col2
A1 1 12
A1 3 10
A1 4 16
........
A9 9 18
A9 7 11
A9 8 15
I want to create a new data frame with columns:
ID col1_min, col1_max, col2_min, col2_max.
A1 1 4 10 16
...........
A9 7 9 11 18
I can do this by using groupby
col1_min = df.groupby(['ID'])['col1'].min()
col1_max = df.groupby(['ID'])['col1'].max()
col2_min = df.groupby(['ID'])['col2'].min()
col2_max = df.groupby(['ID'])['col2'].max()
df2 = pd.DataFrame({'col1_min':col1_min, 'col1_max':col1_max, 'col2_min':col2_min, 'col2_max':col2_max})
There must be a better and more elegant way (one liner) ?
Many thanks in advance.