'list' object has no attribute 'sum'
时间: 2023-09-14 19:04:49 浏览: 59
这个错误是因为Python的列表对象是不支持sum()函数的。如果您想对列表中的元素进行求和操作,可以使用Python内置的sum()函数,例如:
```python
my_list = [1, 2, 3, 4, 5]
total_sum = sum(my_list)
print(total_sum)
```
这将输出15,即my_list列表中所有元素的总和。
相关问题
AttributeError: 'list' object has no attribute 'sum'
AttributeError: 'list' object has no attribute 'sum' 是一个错误信息,它表示你正在尝试在一个列表对象上使用sum()方法,但该方法并不存在于列表对象中。这个错误通常发生在你试图对一个列表进行求和操作时。解决这个问题的方法是确保你正在对一个包含数字的列表进行求和操作。你可以检查一下你的代码,确认你的列表中的元素是否都是数字类型。如果列表中包含了非数字类型的元素,你可以使用过滤器或其他方法来排除它们。另外,你还可以尝试将列表转换为NumPy数组,然后使用NumPy库中的sum()方法进行求和操作。
报错:'list' object has no attribute 'sum'
非常抱歉,我的代码有误。这是因为我错误地将学分列表 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 文件中,其中会包含添加的两列“加权平均成绩”和“加权平均绩点”。