日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

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

作者:侯小啾 ? 更新時間: 2022-06-07 編程語言

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)

總結

原文鏈接:https://blog.csdn.net/weixin_48964486/article/details/123371907

欄目分類
最近更新