pandas MultiIndex多級(jí)索引實(shí)例:美國(guó)城市宜居性、創(chuàng)業(yè)投資記錄
美國(guó)250個(gè)城市的宜居性:neighborhoods.csv
鏈接:https://pan.baidu.com/s/1wThRBDU1DUyk5blmGHyE0Q?pwd=1234
1. 多級(jí)索引的讀取
直接讀取可見(jiàn),neighborhoods.csv包含三級(jí)索引,但并未被識(shí)別出:

使用index_col = [0, 1, 2]把左邊三列轉(zhuǎn)為index,使用header = [0, 1]把上面兩行轉(zhuǎn)為header:

現(xiàn)在,左邊的行名index是一個(gè)三元素的元組,例如:('MO', 'Fisherborough', '244 Tracy View')

上邊的列名column是一個(gè)兩元素元組,例如:(Culture, Restaurants)

對(duì)于index的index(也就是MultiIndex),用neighborhoods.index.names表示:

對(duì)于column的index(也就是MultiIndex),尚未賦值。可通過(guò)如下方法賦值:
顯示效果如下:(也位于左上角)

從MultiIndex中獲得index,采用get_level_values():


對(duì)唯一值的數(shù)量(num)計(jì)數(shù)是用.nuique:

查看唯一值是用.unique():(關(guān)于行列的提取方式,參見(jiàn)3. 行列提取)

2. 排序
按多級(jí)index按順序排:neighborhoods.sort_index()

自定義升降序:
自定義參與排序:
和二維DataFrame一樣,添加axis = 1可實(shí)現(xiàn)對(duì)column排序:
3. 行列提取
3.1 列提取
必須以元組的形式,一級(jí)一級(jí)。
單列:Series,不顯示column
多列:DataFrame,會(huì)顯示column
3.2 行提取
使用.loc:
3.3 行列提取
為避免歧義,建議分別使用兩個(gè)元組:(元組內(nèi)的第二個(gè)可以是同級(jí),也可以是次級(jí))
輸出:

跨首級(jí)選擇:靈活使用列表

常規(guī)切片:(首尾包含)
數(shù)字切片:(有首無(wú)尾,閉開(kāi)區(qū)間)
4. 交叉選擇(x select)
僅通過(guò)一個(gè)級(jí)別定位值,即使不是首級(jí):.xs()
例1:二級(jí)index是"Lake Nicole"定位
例2:二級(jí)column是"Museums"定位
多重要求則用元組。
5. 修改index索引
5.1 去掉索引
MultiIndex順序修改:reorder_levels()
重置索引為默認(rèn)的數(shù)字形式:reset_index()

從index移動(dòng)到DataFrame的column:

使用drop刪除選中MultiIndex:
5.2 添加索引
目前是純數(shù)字索引:

使用set_index(key=)添加:
如果是二級(jí)column:
6. 示例:數(shù)據(jù)整理
創(chuàng)建創(chuàng)業(yè)投資記錄investments.csv的三級(jí)MultiIndex。
先查看唯一值的量,以決定分級(jí):

選擇3?-> 16?-> 61:
輸出效果:
