Pandas學習筆記 03 索引
第三章 索引 總結
目錄1 索引器
[]
:列選擇
loc
:基於元素
iloc
: 基於位置
query
:減少程式碼長度
2 多級索引
行索引和列索引都是MultiIndex
型別,索引中的元素是元組。
索引的名字和值屬性可以通過names
和values
通過get_level_values(n)
可以獲得第n
層的索引。
通過IndexSlice
可以多層切片。
構造方法:from_tuples, from_arrays, from_product
3 索引的常用方法
3.1 索引層的交換和刪除
swaplevel
:交換指定軸的兩個索引層
reorder_levels
:交換指定軸的任意層
droplevel
:刪除某一層的索引
3.2 索引屬性的修改
rename_axis
: 修改索引層的名稱,傳入字典或函式
rename
:修改索引值,level
指定索引層,傳入字典或函式
map
:定義在index
上的方法,直接傳入索引的元組,可以對多級索引進行壓縮或展開。
3.3 索引的設定與重置
set_index
:設定索引,預設刪除原索引,append=True
表示保留原索引,新設定作為內層索引。
reset_index
:取消索引,預設將取消的索引層新增到列中,drop=True
表示去掉索引層。
3.4 索引的變形
reindex
:傳入index
和columns
引數列表,新表會根據索引自動對齊。
reindex_like
:傳入DataFrame
引數,仿照該引數變形。
4 索引運算
交集:id1.intersection(id2)
id1 & id2
並集:id1.union(id2)
id1 | id2
差集:id1.difference()
(id1 ^ id2) & id1
對稱差集:id1.symmetric_difference(id2)
id1 ^ id2
(注意unique
去重)
5 索引切片
5.1 單層索引切片
5.1.1 序列Series
的行索引
a. 字串切片,包含兩個端點,前後端點值重複出現則需先排序
b. 整數切片,左閉右開,取出索引位置的值
5.1.2 loc
索引器
a. 字串切片,包含兩個端點,端點不唯一則報錯
b. DataFrame
整數切片,包含兩個端點且不能重複
c. 函式無法返回切片形式,要用slice
物件進行包裝
5.1.3 iloc
索引器(位置篩選)
a. 切片不包含結束端點
b. 傳入切片為返回值的函式,使用slice物件包裝
5.2 多級索引切片
5.2.1 與單層索引的區別
單層索引中,切片端點元素唯一即可切片;
多級索引中,切片前必須排序
5.2.2 IndexSlice
物件切片
IndexSlice
可以分層切片,將切片與布林列表混用。(定義:idx = pd.IndexSlice
)
a. loc[idx[*,*]]
型,不能分層切片
b. loc[idx[*,*],idx[*,*]]
型,可以多層分別切片,但不支援使用函式
參考:
joyful pandas教程 https://github.com/datawhalechina/joyful-pandas