报错:'list' object has no attribute 'sum'
时间: 2023-06-23 13:57:14 浏览: 299
非常抱歉,我的代码有误。这是因为我错误地将学分列表 credit 定义为了一个普通的列表,而不是一个 Pandas 的 Series 对象。因此,sum() 方法无法被应用于列表对象。为了解决这个问题,您可以将 credit 定义为一个 Pandas 的 Series 对象,如下所示:
```python
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('统计学类专业成绩单.xlsx')
# 计算加权平均成绩和加权平均绩点
credit = pd.Series([2, 3, 3, 2, 2, 2, 2, 2]) # 每科学分
score = df.iloc[:, 2:] # 取出分数列
weighted_score = (score * credit).sum(axis=1) / credit.sum() # 计算加权平均成绩
point_dict = {100: 4.0, 89: 3.7, 85: 3.3, 82: 3.0, 79: 2.7, 75: 2.3, 72: 2.0,
69: 1.7, 65: 1.3, 62: 1.0, 60: 0.0} # 分数与绩点的对应关系
def get_point(score):
for key, value in point_dict.items():
if score >= key:
return value
return 0.0
weighted_point = score.applymap(get_point).mul(credit).sum(axis=1) / credit.sum() # 计算加权平均绩点
# 将加权平均成绩和加权平均绩点添加到 DataFrame 中
df['加权平均成绩'] = weighted_score
df['加权平均绩点'] = weighted_point
# 将处理后的 DataFrame 保存到新的 Excel 文件中
df.to_excel('处理后的成绩单.xlsx', index=False)
```
这段修正后的代码会将处理后的 DataFrame 保存到名为“处理后的成绩单.xlsx”的新 Excel 文件中,其中会包含添加的两列“加权平均成绩”和“加权平均绩点”。
阅读全文