1. 程式人生 > >pandas中的stack與unstack簡單描述

pandas中的stack與unstack簡單描述

  在用pandas進行資料重排時,經常用到stack和unstack兩個函式。stack簡單理解可以是堆疊,堆積,unstack即“不要堆疊”。下面為較為淺顯的講述該方法,並未涉及到多標籤的問題。

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

   表格在行列方向上均有索引(類似於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)。

(需要注意的是,stack函式預設使用了dropna=True,你可以試試將2變成nan,再stack則不會出現three層)

 

文章轉載地址:https://www.cnblogs.com/bambipai/p/7658311.html