python pandas stack和unstack函數


  在用pandas進行數據重排時,經常用到stack和unstack兩個函數。stack的意思是堆疊,堆積,unstack即“不要堆疊”,我對兩個函數是這樣理解和區分的。

  常見的數據的層次化結構有兩種,一種是表格,一種是“花括號”,即下面這樣的l兩種形式:

 

store1

store2

store3

street1

1

2

3

street2

4

5

6

                                 

   表格在行列方向上均有索引(類似於DataFrame),花括號結構只有“列方向”上的索引(類似於層次化的Series),結構更加偏向於堆疊(Series-stack,方便記憶)。stack函數會將數據從”表格結構“變成”花括號結構“,即將其行索引變成列索引,反之,unstack函數將數據從”花括號結構“變成”表格結構“,即要將其中一層的列索引變成行索引。例:

import numpy as np import pandas as pd from pandas import Series,DataFrame data=DataFrame(np.arange(6).reshape((2,3)),index=pd.Index(['street1','street2']),columns=pd.Index(['one','two','three'])) print(data) print('-----------------------------------------\n') data2=data.stack() data3=data2.unstack() print(data2) print('-----------------------------------------\n') print(data3)

·打印結果如下:使用stack函數,將data的行索引['one','two','three’]轉變成列索引(第二層),便得到了一個層次化的Series(data2),使用unstack函數,將data2的第二層列索引轉變成行索引(默認的,可以改變),便又得到了DataFrame(data3)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM