gpt4 book ai didi

python - 编写此代码的高效且简洁的方法 - Pandas

转载 作者:行者123 更新时间:2023-12-01 03:16:08 24 4
gpt4 key购买 nike

我一直在编写这段代码,它总结了我的数据框中 3 项作业和 1 项测试的分数,并根据分数生成分数(A、B、C、D、F)。

这是我的数据框。

 StudentId, Assignment1, Assignment2, Assignment3, Test
xxxxxxxx 11 15 7 50
yyyyyyyy 5 10 2 31

这是我的代码,用于总结分数并生成分数

SumScoreX = []
GradeX = []
for x in xrange(len(df)):
A1, A2, A3, T1 = df['Assignment1'][x], df['Assignment2'][x],df['Assignment3'][x], df['Test'][x]
SumScore = np.sum([A1,A2,A3,T1])
if SumScore < 51:
Grade = 'F'
elif SumScore == 50 and SumScore < 60:
Grade = 'D'
elif SumScore == 60 and SumScore < 70:
Grade = 'C'
elif SumScore == 70 and SumScore < 80:
Grade = 'B'
elif SumScore <= 80:
Grade = 'A'
SumScoreX.append(np.round(SumScore))
GradeX.append(Grade)

我的代码看起来很不干净。我觉得应该有更好的方法来编写与此代码具有类似功能的代码。

请给我建议。

谢谢!

最佳答案

假设您有以下 DF:

In [100]: df
Out[100]:
StudentId Assignment1 Assignment2 Assignment3 Test
0 xxxxxxxx 11 15 7 50
1 yyyyyyyy 5 10 2 31

首先计算分数:

In [101]: df['score'] = df.filter(regex=r'(?:Assignment\d*|Test)').sum(1)

现在我们可以使用 pd.cut() 对分数进行分类方法:

In [102]: df['grade'] = pd.cut(df.score, bins=[0, 51, 60, 70, 80, 200], labels=list('FDCBA'))

In [103]: df
Out[103]:
StudentId Assignment1 Assignment2 Assignment3 Test score grade
0 xxxxxxxx 11 15 7 50 83 A
1 yyyyyyyy 5 10 2 31 48 F

关于python - 编写此代码的高效且简洁的方法 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42454967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com