首頁 > 軟體

python DataFrame中stack()方法、unstack()方法和pivot()方法淺析

2022-04-06 13:01:20

1.stack()

stack()用於將列索引轉換為最內層的行索引,這樣敘述比較抽象,看範例就容易理解啦:

準備一組資料,給其設定雙索引。

import pandas as pd
data = [['A類', 'a1', 123, 224, 254], ['A類', 'a2', 234, 135, 444], ['A類', 'a3', 345, 241, 324],
        ['B類', 'b1', 112, 412, 466], ['B類', 'b2', 224, 235, 345], ['B類', 'b3', 369, 214, 352],
        ['C類', 'c1', 236, 251, 485], ['C類', 'c2', 378, 216, 515], ['C類', 'c3', 135, 421, 312],
        ['D類', 'd1', 306, 325, 496], ['D類', 'd2', 147, 235, 524], ['D類', 'd3', 520, 222, 267]]
df = pd.DataFrame(data=data, columns=['類別', '編號', 'A指標', 'B指標', 'C指標'])
df = df.set_index(['類別', '編號'])
print(df)

df = df.stack()
print(df)

如圖,成功將索引列之外的 A指標,B指標,C指標三列放在了同一列。

此時的df,不再是一個DataFrame,而變為了一個Series物件。:

print(type(df))

該Series的index列不同於原DataFrame的index列,而是在原DataFrame的index列的基礎上,又增加了從右邊合併過來的部分:

print(df.index)

此時Values為:

print(df.values)

2. unstack()

unstack是stack的逆向操作。

在上述範例的程式碼的基礎上,對上邊的df繼續呼叫unstack()方法:

df1 = df.unstack()
print(df1)

可以看到unstack變回了原來的樣子。

3. pivot()

這裡對於上邊例子中的資料稍作調整:

不設定多重索引

import pandas as pd
data = [['A類', '1', 123, 224, 254], ['A類', '2', 234, 135, 444], ['A類', '3', 345, 241, 324],
        ['B類', '1', 112, 412, 466], ['B類', '2', 224, 235, 345], ['B類', '3', 369, 214, 352],
        ['C類', '1', 236, 251, 485], ['C類', '2', 378, 216, 515], ['C類', '3', 135, 421, 312],
        ['D類', '1', 306, 325, 496], ['D類', '2', 147, 235, 524], ['D類', '3', 520, 222, 267]]
df = pd.DataFrame(data=data, columns=['類別', '編號', 'A指標', 'B指標', 'C指標'])
print(df)

df2 = df.pivot(index='編號', columns='類別', values='A指標')
print(df2)

index和columns分別指設定那一列的值為index,設定那一列的值為columns。values指表格要體現的指標。

df3 = df.pivot(index='類別', columns='編號', values='A指標')
print(df3)

總結

到此這篇關於python DataFrame中stack()方法、unstack()方法和pivot()方法的文章就介紹到這了,更多相關DataFrame stack()、unstack()和pivot()內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com