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