Python3 pandas庫 (29) 逆透視與stack()
05-06
近期有兩人向我提問關於同一類型的問題,一個是在excel裡面,一個是在pandas裡面。這類問題我也常遇到而且還挺麻煩。
關於excel的回答在下面:
曹驥:怎麼提取EXCEL裡面的這種數據?
。
。
在前面的我們用過pivot_table()透視功能,這個功能很強大。在excel也有類似功能。透視的功能可以根據excel透視表的圖標大概看個究竟:
透視最基本的功能就是將普通列的內容轉換為索引或者列名,並進行各種的匯總計算。
那麼『逆透視』就是將索引,特別是將列名轉換為普通的列,方便後期計算。這個在excel裡面叫做二維錶轉換為一維表。
比我們在處理數據時,得到的是類似於下面的這個表格:
這種匯總表作為結論的確是一目了然,但是如果還要進行進一步的加工處理就很麻煩了。
將這個數據導入pandas:
有個stack()功能將列名轉換為普通列的內容,來試試:
似乎有點類似,但是並不正確,主要是產品名稱沒有正確。如果先將產品名稱轉換為索引再用stack(),怎麼樣呢?
這次更接近了。但是產品名稱是索引,不方便,還是要轉換為普通列:
基本完成,只要設置好列名就行了。
。
。
。
然而現實並不總是這麼簡單:
如果前面還有一列『產品大類』怎麼辦呢?甚至還有多列呢?
。
。
。
。
。
我們可以考慮將『產品大類』和『產品名稱』兩列都設置為索引。
這樣再多的列都不怕了。。。。。
推薦閱讀: