官方文档定义为“基于整数位置的索引,用于按位置进行选择。”
(官方文档http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html#pandas.DataFrame.iloc)
啥意思呢,意思就是iloc函数只根据行列号对数据进行切片或选择,与loc函数不同,loc函数可以通过规定dataframe的列名进行选择,iloc函数则是“纯粹”按照数据位置进行数据索引,参数也都是对行列号或行列号的切片或行列号的其他函数操作。
这里就按照官方给的示例捋一下iloc函数的各种索引使用方法吧。
先写一个示例:
import pandas as pd
mydict = [{'a': 1, 'b': 2, 'c': 3, 'd': 4},
{'a': 100, 'b': 200, 'c': 300, 'd': 400},
{'a': 1000, 'b': 2000, 'c': 3000, 'd': 4000 }]
df = pd.DataFrame(mydict)
1、按行索引
(1)整数作为索引:df.iloc[n],默认查找第n行
df.iloc[0]
(2)列表作为索引:查找列表中数字对应行号的数据,如,当输入[0,2]时,对应查找行号为0和2的数据,而不是0-2行
df.iloc[[0,2]]
(3)切片作为索引:实现多行数据查找
df.iloc[:2]#选择前两行数据
(4)布尔类型数据作为索引:需保持布尔类型数据与原数据数目一致,True代表选择,False代表不选择
df.iloc[[True, False, True]]#选择了第一行和第三行数据
(5)表达式作为索引:
df.iloc[lambda x: x.index % 2 == 0]#选择偶数行
2、同时规定行和列进行索引,与只按行索引类似,也有五种方式,在行和列之间添加“,”分别规定行列索引范围。
注意:规定的数字都是行列号,行列号均从0开始,行列号为行列数-1,即第1行第1列索引应为df.iloc[0,0]
df.iloc[0, 1]#选择行号=0,列号=1的数据
df.iloc[[0, 2], [1, 3]]#选择行号为0和2,列号为1和3的数据
df.iloc[1:3, 0:3]#选择行号为1-2,列号为0-2的数据,注意切片范围为左闭右开
df.iloc[:, [True, False, True, False]]#行号全选,选择第1列和第3列数据
df.iloc[:, lambda df: [0, 2]]#选择dataframe的第1列与第3列