pandas中的stack與unstack簡單描述

2021-09-30 17:09:36 字數 1194 閱讀 9618

在用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層)

pandas 中 stack 的使用

有時候需要將特徵名稱轉化為變數,也就是將資料集由橫向改為縱向,或者為轉秩。使用場景如下 資料集 in 5 test out 5 tweet id doggo floofer pupper puppo 0675003128568291329 none none none none 1786233965...

Java中Heap與Stack的區別

一般常有堆記憶體 heap 和棧空間 stack 的說法。以下是他們的區別 1 heap是 stack的乙個子集。2 stack訪問速度僅次於暫存器,stack裡面的資料可共享,但是其中資料的大小和生存期必須在執行前確定。3 heap是執行時可動態分配的資料區,從速度看比stack慢,heap裡面的...

STL中的queue用法與stack用法對比

是stl中的佇列,特點是先進先出,方便我們不用自己去構造佇列,包含在標頭檔案 include中。定義乙個佇列 queueq 資料型別可以根據自己的需要來定義 基本操作 入隊 q.push x 將元素新增到佇列的末尾。出隊 q.pop 彈出佇列的第乙個元素 並不返回該元素的值 訪問隊首元素 q.fro...