我正在学生考试数据集如下,
userid grade examid subject numberofcorrectanswers numberofwronganswers
4 5 8 Synonyms NULL NULL
4 5 8 Sentence NULL NULL
4 5 8 Whole Numbers 6 15
4 5 8 Decimals 4 10
5 5 9 Synonyms NULL NULL
5 5 9 Sentence NULL NULL
5 5 9 Whole Numbers 5 12
5 5 9 Decimals 3 1
我想将这种长格式转换为宽格式,我可以将数据转换为
userid grade examid Synonyms_numberofcorrectanswers Synonyms_numberofwronganswers Sentence_numberofcorrectanswers Sentence_numberofwronganswers Whole_numbers_numberofcorrectanswers Whole_numbers_numberofwronganswers Decimals_numberofcorrectanswers Decimals_numberofwronganswers
4 5 8 NULL NULL NULL NULL 6 15 4 10
5 5 9 NULL NULL NULL NULL 5 12 3 1
以下是我的尝试,
data_subset.set_index(['userid', 'grade','examid','subject']).unstack('subject').reset_index()
但这不是单个平面数据帧。里面有几个层次结构。任何人都可以帮我制作一个扁平的数据帧吗?
由于
答案 0 :(得分:1)
这样的东西?
var data = {
songTitle: 'Blah Blah',
songTime: '1:30'
}
Songs.update({
_id: songId,
createdBy: currentUser,
},
{
$set: {data}
});
答案 1 :(得分:1)
我会扩展亚历山大的答案。说我们有
writeFile
我们将两级列索引的名称作为带有df2 = df.groupby(['userid', 'grade','examid','subject']).sum().unstack('subject')
的2元组列表。将它展平并组合名称:
df2.columns.get_values()
如果需要:
对列进行排序:例如new_col_names = ['_'.join((b,a)) for a,b in df2.columns.get_values()]
df2.columns = new_col_names
将df2.reindex(columns = sorted(df2.columns))
等设置为列而不是多索引:userid