pandas 中 Dataframe 索引.ix,.iloc,.loc 的使用以及区别

pandas 中索引的使用

定义一个 pandas 的 DataFrame 对象

 
import pandas as pd
data = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]},index=["a","b","c"])
data
 
    A   B   C
a   1   4   7
b   2   5   8
c   3   6   9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

.loc 的使用

.loc[], 中括号里面是先行后列,以逗号分割,行和列分别是行标签和列标签,比如我要得到数字 5,那么就就是:

data.loc["b","B"]
  • 1

因为行标签为 b,列标签为 B,同理,那么 4 就是 data[“a”,”B”]
上面只是选择某一个值,那么如果我要选择一个区域呢,比如我要选择 5,8,6,9,那么可以这样做:

data.loc['b':'c','B':'C']
  • 1

因为选择的区域,左上角的值是 5,右下角的值是 9,那么这个矩形区域的值就是这两个坐标之间,也就是对应 5 的行标签到 9 的行标签,5 的列标签到 9 的列标签,行列标签之间用逗号隔开,行标签与行标签之间,列标签与列标签之间用冒号隔开,记住,.loc 是用行列标签来进行选择数据的。那么,我们会想,那我们只知道要第几行,第几列的数据呢,这该怎么办,刚好,.iloc 就是干这个事的

.iloc

.iloc[] 与 loc 一样,中括号里面也是先行后列,行列标签用逗号分割,与 loc 不同的之处是,.iloc 是根据行数与列数来索引的,比如上面提到的得到数字 5,那么用 iloc 来表示就是 data.iloc[1,1], 因为 5 是第 2 行第 2 列,注意索引从 0 开始的,同理 4 就是 data.iloc[0,1],同样如果我们需要选择一个区域,比如我要选择 5,8,6,9,那么用,iloc 来选择就是

data.iloc[1:3,1:3]
  • 1

因为 5 在第二行第二列,9 在第三行第三列,注意此处区间前闭后开,所以是 1:3,与 loc 不同的是 loc 前闭后闭,以及 loc 是根据行列标签,而.iloc 是根据行数与列数

.ix

.ix 我发现,上面两种用法他都可以,它既可以根据行列标签又可以根据行列数,比如拿到 5

data.ix[1,1]
data.ix["b","B"]
  • 1
  • 2

上面两种做法都可以的,同理选择一个区域

data.ix[1:3,1:3]
data.ix['b':'c','B':'C']
  • 1
  • 2
  • 3

以上两种方法都是取到 5,6,7,8