你可以使用以下方法在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添加空列