有以下的一个dataframe数据:
D X Y Z
A 22 16 23
A 21 16 22
A 20 17 21
B 33 50 11
B 34 53 12
B 34 55 13
C 44 34 11
C 45 33 11
C 45 33 10
D 55 35 60
D 57 34 61
E 66 36 13
E 67 38 14
E 67 37 13
要统计出各分类在各列的最小值和最大值。
方案一
第一步:分组,以及对分组做聚合
df = df.groupby('D').agg(['min', 'max'])
结果如下:
>>> df
X Y Z
min max min max min max
D
A 20 22 16 17 21 23
B 33 34 50 55 11 13
C 44 45 33 34 10 11
D 55 57 34 35 60 61
E 66 67 36 38 13 14
第二步:使用join展开列
df.columns = df.columns.map(''.join)
df.rename_axis(None)
Xmin Xmax Ymin Ymax Zmin Zmax
A 20 22 16 17 21 23
B 33 34 50 55 11 13
C 44 45 33 34 10 11
D 55 57 34 35 60 61
E 66 67 36 38 13 14
方案二
df = df.groupby('D').min().join(df.groupby('D').max(), lsuffix='min', rsuffix='max')
输入结果
>>> df
X Y Z
min max min max min max
D
A 20 22 16 17 21 23
B 33 34 50 55 11 13
C 44 45 33 34 10 11
D 55 57 34 35 60 61
E 66 67 36 38 13 14