本文主要介绍Python中,依据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

预期结果:

D 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

1、使用itertools实现

from itertools import product
aggs = {f"{col}{fn}": (col, fn) for col,fn in product(['X', 'Y', 'Z'], ['min', 'max'])}
df = df.groupby('D').agg(**aggs)
print(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

2、groupby()和agg()

df = df.groupby('D').agg(['min', 'max'])
print(df)

df = df.groupby('D').agg(['min', 'max'])
df.columns = df.columns.map("".join)
print(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

3、rsuffix和lsuffix

output = df.groupby('D').min().join(df.groupby('D').max(), lsuffix='min', rsuffix='max')
print(output)

输出:

   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

推荐文档