Python笔记:pandas之索引与切片

索引对象

pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。

构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index。

Index对象是不可变的,因此用户不能对其进行修改,不可变可以使Index对象在多个数据结构之间安全共享。

除了类似于数组,Index的功能也类似一个固定大小的集合。

与python的集合不同,pandas的Index可以包含重复的标签。

#Index的方法和属性
append          #连接另一个Index对象,产生一个新的Index
difference      #计算差集,并得到一个Index
intersection    #计算交集
union           #计算并集
isin            #计算一个指示各值是否都包含在参数集合中的布尔型数组
delete          #删除索引i处的元素,并得到新的Index
drop            #删除传入的值,并得到新的Index
insert          #将元素插入到索引i处,并得到新的Index
is_monotonic    #当各元素均大于等于前一个元素时,返回True
is_unique       #当Index没有重复值时,返回True
unique          #计算Index中唯一值的数组

基本功能

重新索引

#根据新的索引进行重排,如果某个索引值当前不存在,则填充缺失值
ser2 = ser.reindex(['a', 'b', 'c', 'd'])

#reindex函数的参数
index           #用作索引的新序列,既可以是Index实例,也可以是其他序列型的Python数据结构
method          #缺失值的填充方式
fill_value      #在重新索引的过程中,需要引入缺失值时使用的替代值
limit           #前向或后向填充时的最大填充量
tolerance       #向前后向后填充时,填充不准确匹配项的最大间距(绝对值距离)
level           #在MultiIndex的指定级别上匹配简单索引,否则选取其子集
copy            #默认为True,无论如何都复制,如果为False,则新旧相等就不复制

丢弃指定轴上的项

#删除索引为'c'的项
new_ser = ser.drop('c')

#删除索引为1的行
frame.drop(1)

#通过指定参数axis的值,删除name列的数据
frame.drop('name', axis=1)

索引、选取和过滤

Series索引的工作方式类似于Numpy数组的索引,只不过Series的索引值不只是整数。

利用标签的切片运算与普通的Python切片运算不同,其末端是包含的。

可以利用切片对Series的相应部分进行设置。

用一个值或序列对DataFrame进行索引会得到一个或多个列的数据

DataFrame的索引选项

frame.loc[val]                  #通过标签,选取DataFrame的单个行或一组行
frame.loc[:,val]                #通过标签,选取单列或列子集
frame.loc[val1, val2]           #通过标签,同时选取行和列
frame.iloc[where]               #通过整数位置,从DataFrame选取单个行或行子集
frame.iloc[:,where]             #通过整数位置,从DataFrame选取单个列或列子集
frame.iloc[where_x,where_y]     #通过整数位置,同时选取行和列
get_value                       #通过行和列标签选取单一值
set_value                       #通过行和列标签设置单一值
posted @ 2021-07-07 17:11  游虚子  阅读(1057)  评论(0)    收藏  举报