python用法 对每一行进行切片_Python Pandas 中索引和切片用法汇总

本文详细解析了Python Pandas中数据框的列索引、iloc方法和loc方法的用法,包括单列或多列选择、行索引、切片以及混合使用的情况。特别指出,loc和iloc在特定情况下可以互相替代,但需注意数据的索引标签与索引值的差异,避免混淆。

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

相比学了Python pandas清洗的亲们对索引和切片应该多少都有过一段时间的混乱,那么下面借此机会特意过来剖析一下相关的用法。此次我们分为三部分进行解析:列索引,iloc方法和loc方法,使用dataframe, user_info

873a3ed4270a8334b75bcf16b98a9738.png取出对应列

此种方法在pandas中是最常见的,我们直接使用dataframe的名称+对应列名称即可实现。

user_info["出生地"], 即可取出对应此列,此列取出后数据类型为Series

那么如果我需要取两列呢,可否实现,答案是可以:

user_info[["出生地","血型"]]----将你想要的列名称打包到一个列表传进去

另外,我们还可以通过方法进行列提取的实现:

user_info.出生地

貌似这种做法更简单,至少看着写法比较清爽,但是请务必注意,如果列名称存在空格,特别是不可见的时候,此种方法会失效。但是上面字符串的方法是可以实现的

2. loc 显示索引

此种方法最简单的理解就是根据显示出来的行索引和列索引标签实现数据的提取。

此时颇有应你所想,取你所取的意思。最为简单的公式可为.loc[”行标签“,”列标签“]

user_info.loc["钢铁侠","年龄"]

但是如果仅仅一行一列交叉的数据并不能满足我们呢,任性的就是需要多行多列数据,需要怎么办呢?

user_info.loc[["灭霸","钢铁侠"],["年龄",""出生地]]-----简单粗暴,将你想要的行名称和列名称打包成列表传到对应行标签,列标签位置,实现你的人生理想。

后来的你也许会有更多的要求,我要的是某两列的所有行,ok,看下面,满足你。

user_info.loc[:,["年龄","出生地","性别"]]-----将你所需要全部体现的行用“:”进行代替。

tips:那么此时,你会否发现这种写法,你会否发现这种写法貌似出现过呢?

是的,似曾相识,这种用法和上面的取列有什么区别呢?

user_info[["出生地","血型"]]

user_info.loc[:,["年龄","出生地","性别"]]

一定要注意区分哦

3. iloc隐士索引:

隐式索引为使用行列的索引值,不看行列索引标签,只看数据是否处于表中的一个什么位置。即,根据真正的行列索引来取

user_info.iloc[0,:]----行索引,列索引

user_info.iloc[0],这也是取行哦,列默认为所有列,所以就省略了上面的:

user_info.iloc[:,0]----取第一列

此时取出的一列或者一行的格式也是Series,往往在我们取出一行的时候,我们会发现Series的dtype变成了object,是的,因为一行数据中可能会存在数值,字符串,布尔型等多种数据类型,此时的Series数据类型往往是object。

此时如果隐士索引想要取多列多行怎么办呢?事实上,隐式索引的切片是更为功能强大的,因为索引是支持步长的,因为索引是数值啊。

user_info.iloc[1::2,1:2]---- 从第一行到最后一行步长为二进行取,取第一列

user_info.iloc[[1,3],[2,4,5]]----举一反三,根据是上面你们看到的打包,你们应该也会将对用的索引值打包成列表进行多样化取值了。

4. 释疑iloc和loc一些你看到过的让你怀疑人生的写法。

明明说好了loc是显示索引,用的是行列标签。iloc用的是行列的索引值,为什么我们在有些代码中看到了loc[1,:],这到底是写错了还是世界爆炸了?

答案是:都没有错,不要怀疑。因为这里面的行标签就是行索引,那么我们就创建一个很简单的dataframe来看一下,这样让人心塞但是还是存在的功能。

7d42eeffc2b2802d895d380f7625dcc7.png

这里面的行标签和行索引是一样的哦,那么这时对于行的写法,loc和iloc是一样的哦。

db362ce832034612bd9599e2682a5c6a.png

bf9210cd8d9c78f017f336ca26b65914.png

ps:取行和取列再复习下:

6c7bb90a8446d3cd405276cd24f9291a.png

综上所述,你会发现隐式索引和显示索引其实在某些情况下是可以同时使用的,但是要注意,这样的使用是存在隐患的。

比如当我们的索引标签虽然是数值,但是数值是存在重复项或者存在缺失值的,这样行索引标签对应的行索引是不一样的。

在取数据的时候,万望记得稳妥为上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值