pandas中loc和iloc的使用细节
1、缘由
前段时间在使用pandas库中的索引和切片的时候,突然就感觉有点懵,赋值和索引的操作总是报错。
网上的很多资料讲的也非常的浅显,而且使用起来非常不顺手。
于是我就找到很多的网上资料,然后自己动手操作总结了一下。
2、细节内容
1、loc 对应的是原生索引,对应的是序列号,索引的设置只能是数字
loc 对应的是设置的索引,可以设置字符串,如果设置的索引为数字,那么就可以根据数字索引来使用。
2、iloc[[i],:]可以,但是iloc[i]不可以
因为第一个是切片得到的二维数组表,第二个得到的是一条信息。
3、pf.loc[pf[(pf['标记']==pf['标记'].max())].index.tolist()[0],'备注']=1(其实这一行代码作用并不大,但是可以帮助掌握一些二维数组属性和方法)
pf2['标记']==pf2['标记'].max() 返回的是一系列的布尔值,把他们做成一个元组
就可以用来筛选出符合条件的数据。
如:pf[pf['标记']==pf['标记'].max()]
4、.iloc用于位置索引,里面的数据是数字。
可以根据位置查找某一个值;
可以使用iloc[ : , : ]来完成切片操作;
可以使用iloc[[ ],[ ]]来选取自己需要的某行和列的数据
5、loc用于标签索引,里面是所在的索引
单单可以输入列名,选取的是某列的内容
输入数字,那么就是根据标签的行索进行的筛选
输入列名,那么就是根据标签的列索进列的筛选
可以切片loc[ ],是根据索引名称进行的
可以花式索引(列表筛选),选取自己需要的某行和某列的数据。
如pf.loc[['1','3'],['A','b']]
6、两者联系
loc[ ]和pf[ ]里面一样可以根据条件筛选
但是ilo不可以
需要更改二维数组中的数据时只能使用loc[ ],不能使用iloc[]
7、df.loc[ ] 用起来更顺手一些