如何在Pandas DataFrame中新增列显示每行最大值对应的列名
解决方法
首先构造符合你需求的DataFrame:
import pandas as pd import numpy as np # 创建初始数据 df = pd.DataFrame({ 'S1': [2, 1, 3], 'S2': [4, 2, np.nan], 'S3': [1, 3, 1], 'S4': [3, 4, 2] })
接下来直接使用Pandas的idxmax()方法,按行查找最大值对应的列名(即学生姓名),并新增为BestStudent列:
# 新增BestStudent列 df['BestStudent'] = df.idxmax(axis=1)
执行后,你的DataFrame就会变成期望的样子:
S1 S2 S3 S4 BestStudent 0 2 4.0 1 3 S2 1 1 2.0 3 4 S4 2 3 NaN 1 2 S1
说明
idxmax(axis=1)指定按行维度查找最大值对应的列标签,正好匹配学生姓名的需求;- 该方法会自动忽略
NaN值,所以第三行中S2的空值不会被纳入比较,正确选出得分最高的S1。
内容的提问来源于stack exchange,提问作者Apook
相关产品推荐
相关产品推荐

