【发布时间】:2020-10-26 23:29:13
【问题描述】:
在计算成绩时,我会去掉每个学生的两个最低作业分数。此处显示了一个示例数据框:
df=pd.DataFrame([[10, 9, 10, 5, 7], [8, 7, 9, 9, 4], [10, 10, 7, 0, 8],
[5, 9, 7, 6, 3], [10, 5, 0, 8, 10], [8, 9, 10, 10, 10]],
columns=['HW1', 'HW2', 'HW3', 'HW4', 'HW5'],
index=['Aaron', 'Bridget', 'Charles', 'Donna', 'Evan', 'Francesca'])
df
实际的数据框包含比这更多的列(用于测试、报告等),但这是家庭作业,我需要找到每条记录的两个最低分数。
我想在数据框中添加两列 ['Lowest'] 和 ['Second_Lowest'],并在这些列中分别指示每个学生的最低分数和次低分数。
我尝试了以下代码,使用 .min() 方法获取最小值,但出现错误:
df['Lowest_HW'] = df[['HW1', 'HW2', 'HW3', 'HW4', 'HW5']].min()
df.head()
所以对于 Aaron,Lowest 的值为 5,Second_Lowest 的值为 7;对于 Francesca,Lowest 为 8,Second_Lowest 为 9。
显然,.min() 方法的代码不正确,我完全不知道要找到第二低的值。
对我如何处理这些步骤有什么建议吗?
【问题讨论】:
-
您的最低代码几乎是正确的,但是您需要
.min(axis=1)将min应用于行而不是列。 -
@ALollz:这是个好问题。我想要单独列中的最低值的原因是因为我要创建一个总作业分数列,该列将是所有 5 个作业列的总和,减去 Lowest 和 Second_Lowest,所以我确实想调出它们的两个最低作业值.
标签: python pandas minimum data-wrangling