26、pandas的逆透视与stack()函数

在前面的我们用过pivot_table()透视功能,这个功能很强大,在excel也有类似功能。

透视最基本的功能就是将普通列的内容转换为索引或者列名,并进行各种的汇总计算。

那么“逆透视”就是将索引,特别是将列名转换为普通的列,方便后期计算,这个在excel里面叫做二维表转换为一维表。

比我们在处理数据时,得到的是类似于下面的这个表格:

源数据

这种汇总表作为结论的确是一目了然,但是如果还要进行进一步的加工处理就很麻烦了。

有个stack()函数能将列名转换为普通列的内容,来试试:

df.stack()

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

把产品名称变为索引

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

重置索引

基本完成,只要设置好列名就行了。

可是如果前面在加上一列呢?

源数据

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

将“产品大类”和“产品名称”两列都设置为索引

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

注意中括号

你可能感兴趣的:(26、pandas的逆透视与stack()函数)