我有一个如下所示的 DataFrame。 “姓名”代表学生姓名,每个测试变量下面的值代表测试成绩。
Name Test1 Test2 Test3
Ana 87 93 82
Cole 62 73 84
Sia 64 58 60
Max 93 95 99
Leah 93 90 85
Cam 76 80 83
所需的结果是下面的 DataFrame。其中“MinTestGrade”表示每个学生在 3 个分数之间获得的最低分数。“TestNumber”是他们获得最低分数的测试。
Name TestNumber MinTestGrade
Ana 3 82
Cole 1 62
Sia 2 58
Max 1 93
Leah 3 85
Cam 1 76
如何使用 python 来做到这一点?
最佳答案
您可以将idxmin
和min
传递给轴上的agg
来查找最低成绩及其对应的列名称,即TestNumber为每个学生。然后用“Name”加入
结果,重命名列,最后从“TestNumber”中删除单词“Test”:
out = df[['Name']].join(df.filter(like='Test').agg(['idxmin', 'min'], axis=1)).rename(columns={'idxmin':'TestNumber', 'min':'MinTestGrade'})
out['TestNumber'] = out['TestNumber'].str.lstrip('Test').astype(int)
输出:
Name TestNumber MinTestGrade
0 Ana 3 82
1 Cole 1 62
2 Sia 2 58
3 Max 1 93
4 Leah 3 85
5 Cam 1 76
关于python - 选择列之间的最小值python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71041861/