下面創建一個Series, 在輸入索引Index時,輸入了由兩個子list組成的list,第一個子list是外層索引,第二個list是內層索引,
示例代碼:
import pandas as pd import numpy as np ser_obj = pd.Series(np.random.randn(12),index=[ ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'd', 'd'], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2] ]) print(ser_obj)
運行結果:
a 0 0.099174 1 -0.310414 2 -0.558047 b 0 1.742445 1 1.152924 2 -0.725332 c 0 -0.150638 1 0.251660 2 0.063387 d 0 1.080605 1 0.567547 2 -0.154148 dtype: float64
MultiIndex索引物件
-
列印這個Series的索引型別,顯示是MultiIndex
-
直接將索引列印出來,可以看到有lavels,和labels兩個資訊,levels表示兩個層級中分別有那些標簽,labels是每個位置分別是什么標簽,
示例代碼:
print(type(ser_obj.index)) print(ser_obj.index)
運行結果:
<class 'pandas.indexes.multi.MultiIndex'> MultiIndex(levels=[['a', 'b', 'c', 'd'], [0, 1, 2]], labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
選取子集
-
根據索引獲取資料,因為現在有兩層索引,當通過外層索引獲取資料的時候,可以直接利用外層索引的標簽來獲取,
-
當要通過內層索引獲取資料的時候,在list中傳入兩個元素,前者是表示要選取的外層索引,后者表示要選取的內層索引,
1. 外層選取:
ser_obj['outer_label']
示例代碼:
# 外層選取 print(ser_obj['c'])
運行結果:
0 -1.362096
1 1.558091
2 -0.452313
dtype: float64
2. 內層選取:
ser_obj[:, 'inner_label']
示例代碼:
# 內層選取 print(ser_obj[:, 2])
運行結果:
a 0.826662 b 0.015426 c -0.452313 d -0.051063 dtype: float64
常用于分組操作、透視表的生成等
交換分層順序
swaplevel()
.swaplevel( )交換內層與外層索引,
示例代碼:
print(ser_obj.swaplevel())
運行結果:
0 a 0.099174 1 a -0.310414 2 a -0.558047 0 b 1.742445 1 b 1.152924 2 b -0.725332 0 c -0.150638 1 c 0.251660 2 c 0.063387 0 d 1.080605 1 d 0.567547 2 d -0.154148 dtype: float64
交換并排序分層
sortlevel()
.sortlevel( )先對外層索引進行排序,再對內層索引進行排序,默認是升序,
示例代碼:
# 交換并排序分層 print(ser_obj.swaplevel().sortlevel())
運行結果:
0 a 0.099174 b 1.742445 c -0.150638 d 1.080605 1 a -0.310414 b 1.152924 c 0.251660 d 0.567547 2 a -0.558047 b -0.725332 c 0.063387 d -0.154148 dtype: float64
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/273119.html
標籤:Python
上一篇:Python3 正確的創建迭代器
