Pandas之MultiIndex對象的示例詳解
約定
import pandas as pd from pandas import DataFrame import numpy as np
MultiIndex
MultiIndex表示多級索引,它是從Index繼承過來的,其中多級標(biāo)簽用元組對象來表示。
一、創(chuàng)建MultiIndex對象
創(chuàng)建方式一:元組列表
m_index1=pd.Index([("A","x1"),("A","x2"),("B","y1"),("B","y2"),("B","y3")],name=["class1","class2"]) m_index1
代碼結(jié)果:
MultiIndex(levels=[['A', 'B'], ['x1', 'x2', 'y1', 'y2', 'y3']], labels=[[0, 0, 1, 1, 1], [0, 1, 2, 3, 4]], names=['class1', 'class2'])
df1=DataFrame(np.random.randint(1,10,(5,3)),index=m_index1) df1
代碼結(jié)果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 7 | 4 | 8 |
x2 | 4 | 5 | 2 | |
B | y1 | 6 | 9 | 7 |
y2 | 2 | 1 | 6 | |
y3 | 6 | 8 | 6 |
創(chuàng)建方式二:特定結(jié)構(gòu)
例如**from_arrays()
class1=["A","A","B","B"] class2=["x1","x2","y1","y2"] m_index2=pd.MultiIndex.from_arrays([class1,class2],names=["class1","class2"]) m_index2
代碼結(jié)果:
MultiIndex(levels=[['A', 'B'], ['x1', 'x2', 'y1', 'y2']], labels=[[0, 0, 1, 1], [0, 1, 2, 3]], names=['class1', 'class2'])
df2=DataFrame(np.random.randint(1,10,(4,3)),index=m_index2) df2
代碼結(jié)果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 2 | 4 | 5 |
x2 | 3 | 5 | 9 | |
B | y1 | 7 | 1 | 2 |
y2 | 3 | 1 | 8 |
創(chuàng)建方式三:笛卡爾積
from_product()從多個集合的笛卡爾積創(chuàng)建MultiIndex對象。
m_index3=pd.MultiIndex.from_product([["A","B"],['x1','y1']],names=["class1","class2"]) m_index3
代碼結(jié)果:
MultiIndex(levels=[['A', 'B'], ['x1', 'y1']], labels=[[0, 0, 1, 1], [0, 1, 0, 1]], names=['class1', 'class2'])
df3=DataFrame(np.random.randint(1,10,(2,4)),columns=m_index3) df3
代碼結(jié)果:
class1 | A | B | ||
---|---|---|---|---|
class2 | x1 | y1 | x1 | y1 |
0 | 2 | 9 | 1 | 8 |
1 | 5 | 2 | 5 | 2 |
二、MultiIndex對象屬性
df1
代碼結(jié)果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 7 | 4 | 8 |
x2 | 4 | 5 | 2 | |
B | y1 | 6 | 9 | 7 |
y2 | 2 | 1 | 6 | |
y3 | 6 | 8 | 6 |
m_index4=df1.index print(in1[0])
代碼結(jié)果:
('A', 'x1')
調(diào)用.get_loc()和.get_indexer()獲取標(biāo)簽的下標(biāo):
print(m_index4.get_loc(("A","x2"))) print(m_index4.get_indexer([("A","x2"),("B","y1"),"nothing"]))
代碼結(jié)果:
1
[ 1 2 -1]
MultiIndex對象使用多個Index對象保存索引中每一級的標(biāo)簽:
print(m_index4.levels[0]) print(m_index4.levels[1])
代碼結(jié)果:
Index(['A', 'B'], dtype='object', name='class1') Index(['x1', 'x2', 'y1', 'y2', 'y3'], dtype='object', name='class2')
MultiIndex對象還有屬性labels保存標(biāo)簽的下標(biāo):
print(m_index4.labels[0]) print(m_index4.labels[1])
代碼結(jié)果:
FrozenNDArray([0, 0, 1, 1, 1], dtype='int8') FrozenNDArray([0, 1, 2, 3, 4], dtype='int8')
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)的中國剩余定理算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的中國剩余定理算法,結(jié)合實(shí)例形式分析了中國剩余定理的概念、原理及具體算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-08-08Python+Tkinter實(shí)現(xiàn)經(jīng)典井字棋小游戲
Tkinter是內(nèi)置到Python安裝包中的,只要安裝好Python之后就能import?Tkinter,而且IDLE也是用Tkinter編寫而成的。本文將用Tkinter編寫經(jīng)典的井字棋小游戲,需要的可以參考一下2022-03-03Python實(shí)現(xiàn)調(diào)用另一個路徑下py文件中的函數(shù)方法總結(jié)
這篇文章主要介紹了Python實(shí)現(xiàn)調(diào)用另一個路徑下py文件中的函數(shù)方法,結(jié)合實(shí)例形式總結(jié)分析了Python針對不同文件夾中py文件調(diào)用操作的處理技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-06-06Pandas借助Numpy實(shí)現(xiàn)優(yōu)化的條件檢索代碼
Numpy其實(shí)是最早的處理數(shù)據(jù)的Python庫,它的核心ndarray對象,是一個高效的n維數(shù)組結(jié)構(gòu),本文主要介紹了Pandas如何借助Numpy優(yōu)化條件檢索,感興趣的可以了解下2024-03-03python神經(jīng)網(wǎng)絡(luò)InceptionV3模型復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)InceptionV3模型復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2022-05-05Python Opencv 通過軌跡(跟蹤)欄實(shí)現(xiàn)更改整張圖像的背景顏色
這篇文章主要介紹了Python Opencv 通過軌跡(跟蹤)欄實(shí)現(xiàn)更改整張圖像的背景顏色,在文章末尾有一個小訓(xùn)練——是將所學(xué)得的圖像顏色修改應(yīng)用為畫板一般的刷新,需要的朋友可以參考下2020-03-03Python3 常用數(shù)據(jù)標(biāo)準(zhǔn)化方法詳解
這篇文章主要介紹了Python3 常用數(shù)據(jù)標(biāo)準(zhǔn)化方法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03python configparser中默認(rèn)值的設(shè)定方式
這篇文章主要介紹了python configparser中默認(rèn)值的設(shè)定方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Python使用thread模塊實(shí)現(xiàn)多線程的操作
線程(Threads)是操作系統(tǒng)提供的一種輕量級的執(zhí)行單元,可以在一個進(jìn)程內(nèi)并發(fā)執(zhí)行多個任務(wù),每個線程都有自己的執(zhí)行上下文,包括棧、寄存器和程序計(jì)數(shù)器,本文給大家介紹了Python使用thread模塊實(shí)現(xiàn)多線程的操作,需要的朋友可以參考下2024-10-10Django框架ORM數(shù)據(jù)庫操作實(shí)例詳解
這篇文章主要介紹了Django框架ORM數(shù)據(jù)庫操作,結(jié)合實(shí)例形式詳細(xì)分析了Django框架ORM數(shù)據(jù)庫基本增刪改查與相關(guān)函數(shù)使用技巧,需要的朋友可以參考下2019-11-11