Pandas中[],loc,iloc,at,iat,ix的用法区别和规律总结 ——Pandas系列(2)

本文深入探讨Pandas库中的数据切片方法,包括loc、iloc、at、iat、ix及dataframe[]的使用技巧与区别,通过实例展示如何高效查询和操作数据。

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

上篇文章介绍了Panda的一些常用的方法,发现用法实在太多,无法一一列举,其实多用几次就发现Pandas的数据切片方法是有使用规律的。数据切片方面常用的方法有loc,iloc,at,iat,ix,dataframe[],这几个方法有很多相似之处。我们来区分一下:

首先我们来造一批测试数据

df=pd.DataFrame(np.arange(42).reshape(7,6),columns=list('abcdefg'),index=list('hijklm'))

loc只能根据行/列名查询

df.loc[:,:] #所有数据
df.loc['h','a'] #h行a列
df.loc[['h','k'],['c','d']] #h,k行的c,d列
df.loc['h':'k','c':'d'] #h~k行的c~d列

iloc只能根据行/列索引查询

df.iloc[:,:] # 显示所有数据
df.iloc[1,1] #显示第一行第一列的数字
df.iloc[[1,3],[1,3]] # 显示1,3行的1,3列数字
df.iloc[1:3,1:3] # 显示1~3行的1~3列数字

at只能根据行/列名查询

at['a','c'] # 显示a行c列的数字

iat只能根据行/列索引查询

iat[1,1] # 显示第1行1列的数字

这里有一个坑,有时候我们发现下面这几种形式竟然也可以查询

loc[1:3,['c','d']]
loc[[1,3],['c','d']]
loc[[1,3],[2:3]

at[2,'c']
at[2,2]


不是说好的.loc和.at只能按照列名查询,为什么也能用索引呢?
并非如此,谁告诉你行名称或者列名称不能是数字了?其实这种写法是因为定义DataFrame结构的时候,把行或者列名定义成了数字,而数字不用加引号,所以看起来好像是用了索引一样,其实loc和at用的仍然是行/列名查找。

dataframe[]只能单独查询行或者列,不能行和列混合查询

df[:] # 取所有数据
df[1:3] # 取1~3行数据
df['a'] # 取'a'列数据
df[['a','b']] #取'a','b'两列数据
df['a'][2] # 取'a'列数据的第二行

ix既能通过索引查询,又能通过行列名进行查询

.ix具备.loc,.iloc,.at,.iat,dataframe[]的所有功能,就不再过多介绍,总之就是.loc,.iloc,.at,.iat,dataframe的语法他都能用

df.ix['i':'l','a':'d']
df.ix[['i','h'],['a','d']]
df.ix[1:3,2:4]
df.ix[[1,3],[2,4]]
df.ix[:,:]

因此在平时使用中,用ix无疑是最好的选择了

pandas是一个强大的数据分析工具,在数据处理过程中,我们经常需要对DataFrame进行查询操作。Pandas提供了多种查询方法,包括locilocatiatix。以下是对这些方法的详细解释区别。 1. locloc是通过行标签列标签进行查询的方法。例如,可以使用df.loc[row_index, column_name]的方式来查询DataFrame的特定值或行列的子集。其中row_index可以是单个索引、索引列表或布尔数组,column_name可以是单个列名或列名列表。loc方法返回的是一个新的DataFrame或Series对象,以便进行进一步的操作。 2. ilociloc是通过行索引列索引进行查询的方法。它与loc用法类似,但是不是使用标签,而是使用整数位置来定位数据。例如,可以使用df.iloc[row_index, column_index]的方式来查询DataFrame的特定值或行列的子集。同样地,iloc方法返回的也是一个新的DataFrame或Series对象。 3. atat用于直接查询DataFrame中的单个元素,它使用行标签列标签来定位。例如,可以使用df.at[row_label, column_label]的方式来获取特定位置的值。与loc方法相比,at方法更快,并且只返回标量值。 4. iatiat用于通过整数位置来查询DataFrame中的单个元素。可以使用df.iat[row_index, column_index]的方式来获取特定位置的值。iat方法与at方法的区别ilocloc区别相似。 5. ix:在旧版本的pandas中,ix方法用于混合标签整数位置的查询。它可以使用标签或整数位置来定位数据,但是由于存在一些歧义性能问题,自从pandas 0.20版本后,被推荐使用lociloc方法来替代ix方法。 总的来说,locat是通过标签进行查询的方法,ilociat是通过整数位置进行查询的方法。同时,lociloc返回的是一个新的DataFrame或Series对象,而atiat只返回标量值。在实际使用中,根据需要选择不同的查询方法。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日拱一两卒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值