I have the following dataframe:
df = code count A 1 A 2 A 3 A 4 B 7 B 8 B 9 B 10
I want to produce the 25 and 75 quartiles per code:
code 25QT 75QT A 2.5 3.5 B 8.5 9.5
Use groupby.quantile, then unstack:
groupby.quantile
unstack
df.groupby('code')['count'].quantile([0.25, 0.75]).unstack()
Output:
0.25 0.75 code A 1.75 3.25 B 7.75 9.25
With the format:
out = (df.groupby('code')['count'] .quantile([0.25, 0.75]).unstack() .rename(columns=lambda x: f'{int(x*100)}QT') .reset_index() )
code 25QT 75QT 0 A 1.75 3.25 1 B 7.75 9.25
Use
groupby.quantile, thenunstack:Output:
With the format:
Output: