pandas库中DataFrame对象的索引方式总结

本文介绍了Pandas库中DataFrame对象的各种高效索引方法,包括使用df[val]、df.ix[val]、df.loc[]和df.iloc[]等进行数据检索与筛选的方式,并详细解释了每种方法的特点与应用场景。
摘要由CSDN通过智能技术生成
DataFrame对象有多种比较方便的索引方式,以下一一进行总结

DataFrame对象为df

1. df[val]

这边注意,返回的是DataFrame的副本,而不是视图

其中val可以是
1. 列名,也就是columns名,可以是单个列或者是由列名组成的列表,如果是单个列名则返回Serie对
象,如果是列表则返回DataFrame对象
2. 分片,用来进行行切片,比如df[:],则会选择所有的行,即使只有一行返回的也是DataFrame对
象,df[:2]选择前两行,这里需要注意,如果说df的index本身就是数值型,比如说是012345....这样的索引,那么df[:2]选择的将是index为01的行,也就是说数字分片优先选择的是行
数而不是行标签。但是对于ix命令来说,df.ix[:2]选择是标签号从开始至2(包括)的行,也就是
上面的0,1,23. boolean数组,这个很好理解,选择boolean数组中为True的值,为被选中的值会被值为NaN
4. 布尔型DataFrame,作用和boolean相似,但是需要该DataFrame和df的columns值相等,否则
会报错

2.df.ix[val]
1. df.ix的功能强大,可以使用标签或者索引数来进行索引操作,val是一个数值的话,那么返回该行
(注意,这里是行,df[val]才是选择列),如df.ix['first']返回索引为first的行,df.ix[0]返
回第一行
2. val不仅可以是数值,还可以是列标签,比如,df.ix['a':'d']意思是选择从标签a到标签d(包
括)的行,也就是不是数值型也可以使用分片了,是不是很方便

3.df.ix[:,val]

第二条是用ix来索引行,那么索引列的操作呢?

该语法的作用是选择单个或者列的子集,可以很明显看出第一项是一个分片操作,那么可以使用df.ix[1:3,'a']来选择第一行和第二行中columns为'a'的值
当然也可以使用标签的分片,都很方便

4.df.loc[]

该方法是用来选择标签值的,比如说df.loc[1:3]语句,可不是选择第二行和第三行,而是选
择index索引值为1,2,3的行(包括3,前面说到了标签的分片和数字的分片不同),注意,此处
是标签,不是行数,这也说明了,.loc[]是根据标签来进行选择的,如果在loc[]的选择范围
内填入了不存在是数值,那么便会报错,如果希望使用索引数字来进行选择呢?可以看下一
个方法,


5.df.iloc[]

看名字可以看出和loc[]的区别,实际看一下效果df.iloc[1:3,2:4]这个选择的范围是,第二行
(第一行是0索引,计算机从0开始计数对吧?),第三行的第二列和第三列的值,给个实例感受
一下

df
    e   f   g
0   NaN 4   1
1   7.0 5   2
2   8.0 6   3

df.iloc[1:,1:] 
    f   g
1   5   2
2   6   3

选择的是从第二行开始的所有行,第二列开始的所有列的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值