26、pandas的逆透视与stack()函数
2017-12-31 本文已影响813人
让数据告诉你
在前面的我们用过pivot_table()透视功能,这个功能很强大,在excel也有类似功能。
透视最基本的功能就是将普通列的内容转换为索引或者列名,并进行各种的汇总计算。
那么“逆透视”就是将索引,特别是将列名转换为普通的列,方便后期计算,这个在excel里面叫做二维表转换为一维表。
比我们在处理数据时,得到的是类似于下面的这个表格:

这种汇总表作为结论的确是一目了然,但是如果还要进行进一步的加工处理就很麻烦了。
有个stack()函数能将列名转换为普通列的内容,来试试:

似乎有点类似,但是并不正确,主要是产品名称没有正确。如果先将产品名称转换为索引再用stack(),怎么样呢?

这次更接近了。但是产品名称是索引,不方便,还是要转换为普通列:

基本完成,只要设置好列名就行了。
可是如果前面在加上一列呢?

那样我们就可以考虑将“产品大类”和“产品名称”两列都设置为索引:

这样就可以了,不过需要注意的是中括号不能忘了,否则就会变成这样的了:
