pandas_02基础 之索引那些事

本文详细介绍了Pandas库中数据索引的方法,包括loc、iloc和[]操作符的使用技巧,以及布尔索引的应用。通过具体示例,帮助读者掌握高效的数据筛选与操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

一、单级索引

1. loc方法、iloc方法、[]操作符

二. 布尔索引


一、单级索引

1. loc方法、iloc方法、[]操作符

最常用的索引方法可能就是这三类,其中iloc表示位置索引,loc表示标签索引,[]也具有很大的便利性,各有特点

(a)loc方法

   ① 单行索引:

import numpy as np
import pandas as pd
df = pd.read_csv('joyful-pandas/data/table.csv',index_col='ID')
df.head()

首先进行数据集的读取操作。

然后我们在进行索引的相关操作。

df.loc[1103]

 ② 多行索引:

注意:所有在loc中使用的切片全部包含右端点!这是因为如果作为Pandas的使用者,那么肯定不太关心最后一个标签再往后一位是什么,但是如果是左闭右开,那么就很麻烦,先要知道再后面一列的名字是什么,非常不方便,因此Pandas中将loc设计为左右全闭) 

③ 单列索引:

④ 多列索引

 ⑤函数式索引: 

df[lambda x:['Math','Physics']].head()

 

(b)iloc方法(注意与loc不同,切片右端点不包含)

1.单行索引

df.iloc[3]

2.多行索引

df.iloc[3:5]

3.单列索引

df.iloc[:,3].head()

4.多列索引

df.iloc[:,7::-2].head()

5.函数式索引

df.iloc[lambda x:[3]].head()

 iloc中接收的参数只能为整数或整数列表或布尔列表,不能使用布尔Series,如果要用就必须如下把values拿出来

df.iloc[(df['School']=='S_1').values].head()

 (c) [ ]操作符

1.Series的[]操作

① 单元素索引:

s = pd.Series(df['Math'],index=df.index)
s[1101]

 ② 多行索引:

s[0:4]
#使用的是绝对位置的整数切片,与元素无关,这里容易混淆

 ③ 函数式索引:

s[lambda x: x.index[16::-6]]
#注意使用lambda函数时,直接切片(如:s[lambda x: 16::-6])就报错,此时使用的不是绝对位置切片,而是元素切片,非常易错

 ④ 布尔索引:

2.DataFrame的[]操作 

① 单行索引:

df[1:2]
#这里非常容易写成df['label'],会报错
#同Series使用了绝对位置切片
#如果想要获得某一个元素,可用如下get_loc方法:

② 多行索引:

#用切片,如果是选取指定的某几行,推荐使用loc,否则很可能报错
df[3:5]

 ③ 单列索引:

df['School'].head()

  ④ 多列索引:

df[['School','Math']].head()

  ⑤函数式索引:

df[lambda x:['Math','Physics']].head()

小节:一般来说,[]操作符常用于列选择或布尔选择,尽量避免行的选择

 

二. 布尔索引

1.布尔符号:'&','|','~':分别代表和and,或or,取反not

df[(df['Gender']=='F')&(df['Address']=='street_2')].head()
df[(df['Math']>85)|(df['Address']=='street_7')].head()
df[~((df['Math']>75)|(df['Address']=='street_1'))].head()

    loc和[]中相应位置都能使用布尔列表选择: 

上面介绍的是关于索引方面常见的问题,具体的代码和数据集都已经放在我的github:pandas_02基础索引代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值