提问者:小点点

iloc和loc有何不同?


有人能解释一下这两种切片方法有什么不同吗?
我看过文档,也看到过这些答案,但我还是发现自己无法理解这三种方法有什么不同。在我看来,它们在很大程度上是可以互换的,因为它们处于较低的切片级别。

例如,假设我们希望获得dataframe的前五行。这两个是怎么工作的?

df.loc[:5]
df.iloc[:5]

谁能说出三种情况,在使用上的区别比较清楚?

从前,我也想知道这两个函数与df.ix[:5]有什么不同,但是ix已经从pandas 1.0中删除了,所以我不再关心了。


共1个答案

匿名用户

这两种方法的主要区别是:

>

  • loc获取具有特定标签的行(和/或列)。

    iloc获取整数位置的行(和/或列)。

    为了演示,请考虑一系列具有非单调整数索引的s字符:

    >>> 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]    # value at index label 0
    'd'
    
    >>> s.iloc[0]   # value at index location 0
    'a'
    
    >>> s.loc[0:1]  # rows at index labels between 0 and 1 (inclusive)
    0    d
    1    e
    
    >>> s.iloc[0:1] # rows at index location between 0 and 1 (exclusive)
    49    a
    

    以下是s.locs.iloc在传递不同对象时的一些差异/相似之处: