Pandas如何在多个列中查找最大值

1,144 阅读2分钟

你可以使用以下方法在pandas DataFrame中找到多列的最大值。

方法1:寻找跨多列的最大值

df[['col1', 'col2', 'col3']].max(axis=1)

方法2:添加包含跨多列最大值的新列

df['new_col'] = df[['col1', 'col2', 'col3']].max(axis=1)

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
                   'points': [28, 17, 19, 14, 23, 26, 5],
                   'rebounds': [5, 6, 4, 7, 14, 12, 9],
                   'assists': [10, 13, 7, 8, 4, 5, 8]})

#view DataFrame
print(df)

  player  points  rebounds  assists
0      A      28         5       10
1      B      17         6       13
2      C      19         4        7
3      D      14         7        8
4      E      23        14        4
5      F      26        12        5
6      G       5         9        8

例1:查找多列的最大值

下面的代码显示了如何在每一行中找到跨越点和反弹列的最大值:

#find max value across points and rebounds columns
df[['points', 'rebounds']].max(axis=1)

0    28
1    17
2    19
3    14
4    23
5    26
6     9
dtype: int64

下面是如何解释输出结果的:

  • 第一行的得分和篮板栏的最大值是28
  • 第二行的得分和篮板列的最大值是17
  • 第三行的得分和篮板列的最大值是19

以此类推。

例子2:添加包含多列最大值的新列

下面的代码显示了如何在DataFrame中添加一个新的列,该列包含每一行的分数和篮板列的最大值:

#add new column that contains max value across points and rebounds columns
df['max_points_rebs'] = df[['points', 'rebounds']].max(axis=1)

#view updated DataFrame
print(df)

  player  points  rebounds  assists  max_points_rebs
0      A      28         5       10               28
1      B      17         6       13               17
2      C      19         4        7               19
3      D      14         7        8               14
4      E      23        14        4               23
5      F      26        12        5               26
6      G       5         9        8                9

现在,名为max_points_rebs的新列包含了DataFrame中每一行的分数和篮板的最大值。

其他资源

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

Pandas:如何将列移动到DataFrame的前面
Pandas:如何检查列是否包含字符串
Pandas:如何向DataFrame添加空列