在我的主要数据框中,我有一列与其他两列组合起来,创建出像这样的值:A1_43567_1。第一个数字表示所采取的评估类型,第二个数字是问题ID,最后一个数字是评估题目的位置。我计划创建一个数据透视表,以使每个唯一的值作为列,查看多个学生在每个项目上的选择。但是我希望数据透视表的顺序是根据问题位置或拼接中的第三个值。基本上输出如下:
我已经尝试按照我想要排序的原始列(问题位置)对数据框进行排序,然后创建数据透视表,但这并没有呈现出我正在寻找的上述结果。是否有一种方法可以按列中第三个值对原始连接值进行排序?或者是否可以按每列的第三个值对数据透视表进行排序?
目前的代码是:
但是输出的结果是这样的:
Student ID A1_45678_1 A1_34551_2 A1_11134_3 etc....
12345 1 0 0
12346 0 0 1
12343 1 1 0
我已经尝试按照我想要排序的原始列(问题位置)对数据框进行排序,然后创建数据透视表,但这并没有呈现出我正在寻找的上述结果。是否有一种方法可以按列中第三个值对原始连接值进行排序?或者是否可以按每列的第三个值对数据透视表进行排序?
目前的代码是:
demo_pivot.sort(['Question Position'], ascending=True)
demo_pivot['newcol'] = 'A' + str(interim_selection) + '_' + ,\
demo_pivot['Item ID'].map(str) + "_" + demo_pivot['Question Position'].map(str)
demo_pivot= pd.pivot_table(demo_pivot, index='Student ANET ID',values='Points Received',\
columns='newcol').reset_index()
但是输出的结果是这样的:
Student ID A1_45678_1 A1_34871_7 A1_11134_15 etc....
12345 1 0 0
12346 0 0 1
12343 1 1 0
demo_pivot = demo_pivot[sort_columns(demo_pivot.columns)]
代替最后的.loc
。 - Alexander