在使用pandas对DataFrame对象进行列和行的选取的时候,经常会使用这样两种方法,他们分别是loc[]和iloc[]。
首先,说明它们的具体用法:
df.loc[] 只能使用标签索引,不能使用整数索引,通过便签索引切边进行筛选时,前闭后闭。
df.iloc[] 只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时,前闭后开。
那我们就用代码来说明:
先创建一个DataFrame对象
import pandas as pd
labels = ['a', 'b', 'c', 'd']
df = pd.DataFrame({'Time':[1,2,3,4],'Furit':['apple','banana','watermelon','banana']},index=labels)
df
水果的英文单词打错了,不是Furit,应该是Fruit
对比分析
df.loc[]
只能使用标签索引,不能使用整数索引,通过便签索引切边进行筛选时,前闭后闭。
df.iloc[]
只能使用整数索引,不能使用标签索引,通过整数索引切边进行筛选时,前闭后开。
对行进行选取,选取索引为‘a’的行:
使用loc,运行正常
但是使用iloc就会报错
但是如果iloc这样使用,就没有问题
反过来loc这样使用,就不对了
这就说明了
loc只能使用标签索引,不能使用整数索引;
iloc只能使用整数索引,不能使用标签索引
特别的
当使用DataFrame的默认索引(整数索引),整数索引即为标签索引时。loc也可以使用整数索引。
>>> df2.loc[0,'Furit']
'apple'
>>> df2.iloc[0,1]
'apple'
loc的前闭后闭和iloc的前闭后开的性质,也就是进行多行多列筛选时,需要注意的地方。
就像上面的使用iloc方法提取前两列时,只出现了第一列Time的结果,也就是前闭后开。