1、iloc的用法
参考文档:Python pandas.DataFrame.iloc函数方法的使用
2、loc的用法
参考文档:Python pandas.DataFrame.loc函数方法的使用
3、iloc和loc的区别
主要区别是loc
获取具有特定label的行(and/or 列)。Iloc
获取整数location上的行(and/or 列)。
例如,
>>> s = pd.Series(list("abcdef"), index=[49, 48, 47, 0, 1, 2]) 49 a 48 b 47 c 0 d 1 e 2 f >>> s.loc[0] # 在索引标签0处的值 'd' >>> s.iloc[0] # 值在索引位置0 'a' >>> s.loc[0:1] # 索引标签在0和1之间的行(包括) 0 d 1 e >>> s.iloc[0:1] # 索引位置在0和1之间的行(不包括) 49 a
.loc
应该基于索引标签而不是位置,所以它类似于Python基于字典的索引。但是,它可以接受布尔数组、切片和标签列表(这些都不能与Python字典一起使用)。
.iloc
基于索引位置进行查找,也就是说,pandas的行为类似于Python列表。如果在该位置没有索引,pandas将引发IndexError。
例如,
>>> s = pd.Series([11, 9], index=["1990", "1993"], name="Magic Numbers") >>> s 1990 11 1993 9 Name: Magic Numbers , dtype: int64 >>> s.iloc[0] 11 >>> s.iloc[-1] 9 >>> s.iloc[4] Traceback (most recent call last): ... IndexError: single positional indexer is out-of-bounds >>> s.iloc[0:3] # slice 1990 11 1993 9 Name: Magic Numbers , dtype: int64 >>> s.iloc[[0,1]] # list 1990 11 1993 9 Name: Magic Numbers , dtype: int64 >>> s.loc['1990'] 11 >>> s.loc['1970'] Traceback (most recent call last): ... KeyError: ’the label [1970] is not in the [index]’ >>> mask = s > 9 >>> s.loc[mask] 1990 11 Name: Magic Numbers , dtype: int64 >>> s.loc['1990':] # slice 1990 11 1993 9 Name: Magic Numbers, dtype: int64