微信扫一扫打赏支持

pandas库疑难问题---3、loc方法和iloc方法的区别

pandas库疑难问题---3、loc方法和iloc方法的区别

一、总结

一句话总结:

loc方法是基于标签的,iloc方法是基于整数索引的
# iloc
# 连续切片
print(data.iloc[1:3:1,1:3])
# 不连续
print(data.iloc[[1,3],[1,3]])

# loc
# 连续切片
print(data.loc["A":"D":2,"z":"v":-1])
# 不连续
print(data.loc[["A","C"],["w","y"]])

 

二、loc方法和iloc方法的区别

博客对应课程的视频位置:3、loc方法和iloc方法的区别-范仁义-读书编程笔记
https://www.fanrenyi.com/video/39/380

 

loc方法是基于标签的,iloc方法是基于整数索引的

loc is label-based, which means that you have to specify rows and columns based on their row and column labels.

iloc is integer index based, so you have to specify rows and columns by their integer index like you did in the previous exercise.

 

 

In [1]:
import pandas as pd
import numpy as np

data = pd.DataFrame(np.arange(20).reshape((4,5)),index=list("ABCD"),columns=list("vwxyz"))
print(data)
    v   w   x   y   z
A   0   1   2   3   4
B   5   6   7   8   9
C  10  11  12  13  14
D  15  16  17  18  19

1、iloc方法

In [2]:
# 连续切片
print(data.iloc[1:3:1,1:3])
    w   x
B   6   7
C  11  12
In [3]:
# 不连续
print(data.iloc[[1,3],[1,3]])
    w   y
B   6   8
D  16  18

2、loc方法

In [4]:
# 连续
print(data.loc["A":"C","w":"y"])
    w   x   y
A   1   2   3
B   6   7   8
C  11  12  13
In [5]:
print(data.loc["A":"D":2,"z":"v":-1])
    z   y   x   w   v
A   4   3   2   1   0
C  14  13  12  11  10
In [6]:
# 不连续
print(data.loc[["A","C"],["w","y"]])
    w   y
A   1   3
C  11  13

需要注意的是:

在iloc使用索引定位的时候,因为是索引,所以,会按照索引的规则取值,如:[1:3] 会取出 1,2 这2个值。

但是loc按照label标签取值则不是这样的。如:["A":"C"] A,B,C 都会取出来。

In [ ]:
 
 
博客对应系列课程视频位置:
1、pandas打乱数据集-范仁义-读书编程笔记
https://www.fanrenyi.com/video/39/360
2、pandas切片操作-范仁义-读书编程笔记
https://www.fanrenyi.com/video/39/379
3、loc方法和iloc方法的区别-范仁义-读书编程笔记
https://www.fanrenyi.com/video/39/380
4、DataFrame类型转换成Numpy中ndarray-范仁义-读书编程笔记
https://www.fanrenyi.com/video/39/381
 
posted @ 2020-10-28 10:29  范仁义  阅读(649)  评论(0编辑  收藏  举报