我在执行下面的任务时遇到了麻烦。我需要创建一个类来容纳所有学生的学生ID、姓名和成绩。我的想法是创建一个空的DataFrame来追加我添加到类中的值。我得出了下面的结果。
class Student:
students_archive = pd.DataFrame(index = 'student_id', columns = ['student_id', 'name', 'grade'])
def __init__(self, s_id, name, grade):
self.s_id = s_id
self.name = name
self.grade = grade
st = {'student_id': self.s_id,'name': self.name, 'grade': self.grade}
pd.concat([Student.students_archive, st])
但是,我得到以下错误:
如果使用所有标量值,则必须传递索引
我真的不明白出了什么问题,我已经到处看了看,有人能帮助我吗?谢谢,我也忍不住认为我的方法是错误的,因为任务实际上并没有指定它需要是一个 Dataframe ,只是说我必须“创建一个类,容纳学生的姓名,年级和id,并创建方法添加,删除或升级学生的值。也许我可以不创建 Dataframe 就完成所有这些操作?谢谢
1条答案
按热度按时间hmae6n7t1#
我还不能发表评论,所以这里有一个答案。
运行代码显示了2个错误:
1.这个
index = 'student_id'
应该更像这个index = ['student_id']
1.此
pd.concat([Student.students_archive, st])
不接受字典,而接受类似pd.concat([dataframe_0, dataframe_1])
的内容另外,我认为如果你在
__init__()
中添加你的 Dataframe 会更好。因此,它应该会产生如下结果:
但是请记住,
temp_df
和new_temp_df
可能会被垃圾收集,因此,添加self.
可以保留您想要的内容我的理解是:
阅读了你的评论和你链接的代码,示例化每个学生似乎超出了范围,但你似乎走在了正确的道路上。
1.我仍然会在
__init__()
里面添加主 Dataframe ,让它更整洁。你仍然可以从类之外访问它(更多见下文)。1.通过方法(add/remove/update)合并所需的功能,这是您开始做的。
1.这种方法是否正确可能取决于你的教授,以及他们是否禁止像Pandas这样的图书馆。我不认为有什么错,因为它给了你很多需要的东西。
所以,在代码中我会建议这样的东西:
从外部访问 Dataframe 非常简单: