我有一个字典列表,每个字典由两个键值元组组成。第一个关键值是一个人的名字,第二个是一个特征向量,由每个人在不同课程中取得的成绩组成。例如:
ListOfGrades=[{'Name':"Mike", 'grades':[98,86,90,72]},{'Name':"Sasha", 'grades':[92,79,85,94]},{'Name':"Beth", 'grades':[89,89,76,90]}]
我想将这些数据导入到一个pandas数据框中,这样每一行都有一个人名的标签,每一列都填充了他们的成绩。简而言之,我需要这样的东西:
^{pr2}$我知道我应该用pd数据帧(等级列表),但我不知道如何设置它来达到我的目的。我见过Convert list of dictionaries to Dataframe,但它与我在数据帧中对数据排序的方式不同。 我试过了:
for i in ListOfGrades:
ListOfGrades[i]=str(ListOfGrades[i]['grades'])
# Convert to dataframe
df = pd.DataFrame.from_dict(ListOfGrades, orient='index').reset_index()
但是,python给了我一个错误:
ListOfGrades[i]=str(ListOfGrades[i]['grades'])
TypeError: list indices must be integers, not dict
另外,我不知道如何将名字添加到每一行,这样数据框的第一列由人名组成,就像我想要的数据框外观一样(如上所示)。感谢任何帮助!在
好吧,这种方法有点麻烦,如果每个学生的分数不一样,它很快就会遇到问题,但本质上,你需要建立一个新的列表,并从该列表创建字典。对于python 3.5:
这是我得到的数据帧:
^{pr2}$如果python的python版本不可用,那么应该有python.3版本:
编辑后添加:上面的内容也适用于Python2.7
试试这个。。在
向列表添加数据:
^{pr2}$出现错误的原因是
i
已经是列表中的一个项(在本例中是字典),而不是索引。为了更好地工作,你可以改变你的循环如下这将使
i
成为一个适当的索引。然而,正如我在前面的评论中提到的,可能有更实际的方法来解决这个问题,比如有一个字典,其中键是名称,值是等级列表。这意味着你不需要字典列表。在相关问题 更多 >
编程相关推荐