第二章 超好用的Pandas索引(上)
0 前言
索引,相当于一本书的目录,告知读者XX内容在一本书的位置。同样地,Pandas索引用于定位特定元素的位置,也用于获取特定位置的元素。
总的来说,可将Pandas索引分为一级索引和多级索引。
1 一级索引
一级索引可归结为四种:
1.1 loc方法、iloc方法、[]操作符
最常用的索引方法可能就是这三类,其中iloc表示位置索引,loc表示标签索引,[]也具有很大的便利性,各有特点。
1.1.1 loc方法
本质上说,loc中能传入的只有布尔列表和索引子集构成的列表。
网上关于loc方法使用的教程很多,而使用loc方法,需要注意的问题有:
# 1. 所有在loc中使用的切片全部包含右端点!所有在loc中使用的切片全部包含右端点!所有在loc中使用的切片全部包含右端点!
# 2. 使用loc方法,即使输入的标签索引是字符也可以进行切片操作(不同于列表,列表只能使用位置索引来切片):
df1 = pd.DataFrame({'A': ['ab', 'bc', 'cd', 'de'], 'B': [1, 2, 3, 4], 'C': [2, 3, 3, 4]})
df1 = df1.set_index('A')
df1.loc['bc':]
# 3. 可在切片操作中使用步长
df1.loc['bc'::-1]
# 4. 函数索引
df1.loc[lambda x:x['C']==3] # loc中使用的函数,传入参数就是前面的df1
1.1.2 iloc方法
和loc方法截然不同,iloc中接收的参数只能为整数或整数列表,不能使用布尔索引。
使用iloc方法,需要注意的地方包括:
# 1. 所有在iloc中使用的切片不包含右端点!所有在iloc中使用的切片不包含右端点!所有在iloc中使用的切片不包含右端点!
# 2. 可在切片操作中使用步长
df1.iloc[:, 3::-2].head() # 从第3列往前取,往前隔一列取一列
# 3. iloc也能使用函数索引
1.1.3 []操作符
一般来说,[]操作符常用于列选择或布尔选择,尽量避免行的选择。如果非得用于行的选择,则不要在行索引为浮点时使用[]操作符,因为在Series中的浮点[]并不是进行位置比较,而是值比较,非常特殊。