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

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

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

作者:侯小啾 ? 更新時(shí)間: 2022-06-07 編程語(yǔ)言

1.stack()

stack()用于將列索引轉(zhuǎn)換為最內(nèi)層的行索引,這樣敘述比較抽象,看示例就容易理解啦:

準(zhǔn)備一組數(shù)據(jù),給其設(shè)置雙索引。

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

df = df.stack()
print(df)

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

此時(shí)的df,不再是一個(gè)DataFrame,而變?yōu)榱艘粋€(gè)Series對(duì)象。:

print(type(df))

該Series的index列不同于原DataFrame的index列,而是在原DataFrame的index列的基礎(chǔ)上,又增加了從右邊合并過(guò)來(lái)的部分:

print(df.index)

此時(shí)Values為:

print(df.values)

2. unstack()

unstack是stack的逆向操作。

在上述示例的代碼的基礎(chǔ)上,對(duì)上邊的df繼續(xù)調(diào)用unstack()方法:

df1 = df.unstack()
print(df1)

可以看到unstack變回了原來(lái)的樣子。

3. pivot()

這里對(duì)于上邊例子中的數(shù)據(jù)稍作調(diào)整:

不設(shè)置多重索引

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

df2 = df.pivot(index='編號(hào)', columns='類(lèi)別', values='A指標(biāo)')
print(df2)

index和columns分別指設(shè)定那一列的值為index,設(shè)置那一列的值為columns。values指表格要體現(xiàn)的指標(biāo)。

df3 = df.pivot(index='類(lèi)別', columns='編號(hào)', values='A指標(biāo)')
print(df3)

總結(jié)

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

欄目分類(lèi)
最近更新