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