如何在Pandas中按组寻找最小值(附实例)

539 阅读2分钟

你可以使用以下方法在pandas DataFrame中通过分组来寻找最小值:

方法1:按一列的最小值分组

df.groupby('group_column')['values_column'].min()

方法2:按多列的最小值分组

df.groupby('group_column')['values_column1', 'values_column2'].min()

下面的例子展示了如何通过以下pandas DataFrame实际使用每种方法:

import pandas as pd

#create pandas DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
                   'points':[24, 23, 27, 11, 14, 8, 13],
                   'rebounds': [11, 8, 7, 6, 6, 5, 12]})

#display DataFrame
print(df)

  team  points  rebounds
0    A      24        11
1    A      23         8
2    B      27         7
3    B      11         6
4    B      14         6
5    C       8         5
6    C      13        12

例子 1: Groupby 一列的最小值

下面的代码显示了如何找到点数列的最小值,按团队列分组。

#find minimum value of points, grouped by team
df.groupby('team')['points'].min() 

team
A    23
B    11
C     8
Name: points, dtype: int64

从输出结果中我们可以看到:

  • A队的积分最小值是23
  • B队的积分最小值是11
  • C队的最低分是8

例2: 多列的Groupby最小值

下面的代码显示了如何找到积分篮板列的最小值,并按球队列进行分组。

#find minimum value of points and rebounds, grouped by team
df.groupby('team')[['points', 'rebounds']].min() 

    points  rebounds
team		
A	23	   8
B	11	   6
C	8	   5

从输出结果我们可以看出:

球队A

  • 最低得分23
  • 最低篮板数8

B队

  • 最低得分11
  • 最低篮板数6

团队C

  • 最低得分8
  • 最低篮板数5

注意:在指定数值列时,一定要使用双括号,否则可能会收到错误。

其他资源

下面的教程解释了如何在pandas中执行其他常见任务。

如何在Pandas中计算列的总和
如何在Pandas中计算列的平均值
如何在Pandas中查找列的最大值