- import pandas as pd
- import numpy as np
- index = [('California', 2000), ('California', 2010),
- ('New York', 2000), ('New York', 2010),
- ('Texas', 2000), ('Texas', 2010)]
- populations = [33871648, 37253956,
- 18976457, 19378102,
- 20851820, 25145561]
- pop = pd.Series(populations, index=index)
- pop
對(duì)于這樣的序列,我們依然可以通過(guò)指定的索引條件進(jìn)行目標(biāo)數(shù)據(jù)的選。
- pop[('California', 2010):('Texas', 2000)]
- pop[[i for i in pop.index if i[1] == 2010]]
運(yùn)用 Pandas 中的 MultiIndex.from_tuples 函數(shù),我們可以將 index 列表轉(zhuǎn)化為一個(gè) MultiIndex 對(duì)象:
- index = pd.MultiIndex.from_tuples(index)
- index
當(dāng)我們用該 MultiIndex 對(duì)象對(duì) Pandas 序列進(jìn)行重塑時(shí),目標(biāo)序列的序號(hào)將會(huì)被轉(zhuǎn)化為多層級(jí)的形式:
- pop = pop.reindex(index)
- pop
這時(shí),屬于不同層級(jí)的序號(hào)將被視為不同維度上的索引值,我們可以使用多維索引的方式來(lái)索引所需要的目標(biāo)數(shù)據(jù):
- pop[:, 2010]
我們可以通過(guò) unstack 函數(shù)將序列 pop 轉(zhuǎn)化為一個(gè)二維的數(shù)據(jù)框,序號(hào)中的兩個(gè)維度將分別對(duì)應(yīng)數(shù)據(jù)框的行與列:
- pop_df = pop.unstack()
- pop_df
可以通過(guò)調(diào)整參數(shù) level 的值來(lái)指定生成數(shù)據(jù)框的行列:
- pop.unstack(level=0)
以上內(nèi)容轉(zhuǎn)自 數(shù)析學(xué)院,原文內(nèi)容較多,有空繼續(xù)搬運(yùn),感興趣的同學(xué)可以直接去查看原文