Python3 pandas庫 (29) 逆透視與stack()

近期有兩人向我提問關於同一類型的問題,一個是在excel裡面,一個是在pandas裡面。這類問題我也常遇到而且還挺麻煩。

關於excel的回答在下面:

曹驥:怎麼提取EXCEL裡面的這種數據?

在前面的我們用過pivot_table()透視功能,這個功能很強大。在excel也有類似功能。透視的功能可以根據excel透視表的圖標大概看個究竟:

透視最基本的功能就是將普通列的內容轉換為索引或者列名,並進行各種的匯總計算。

那麼『逆透視』就是將索引,特別是將列名轉換為普通的列,方便後期計算。這個在excel裡面叫做二維錶轉換為一維表。

比我們在處理數據時,得到的是類似於下面的這個表格:

這種匯總表作為結論的確是一目了然,但是如果還要進行進一步的加工處理就很麻煩了。

將這個數據導入pandas:

有個stack()功能將列名轉換為普通列的內容,來試試:

似乎有點類似,但是並不正確,主要是產品名稱沒有正確。如果先將產品名稱轉換為索引再用stack(),怎麼樣呢?

這次更接近了。但是產品名稱是索引,不方便,還是要轉換為普通列:

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

然而現實並不總是這麼簡單:

如果前面還有一列『產品大類』怎麼辦呢?甚至還有多列呢?

我們可以考慮將『產品大類』和『產品名稱』兩列都設置為索引。

這樣再多的列都不怕了。。。。。


推薦閱讀:

TAG:Python | Python入門 | Python庫 |