当前位置: 首页 > 知识库问答 >
问题:

iloc和loc有何不同?

谭京
2023-03-14

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

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

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

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

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

共有1个答案

章茂
2023-03-14

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

>

  • 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在传递不同对象时的一些差异/相似之处:

  •  类似资料:
    • 问题内容: 有人可以解释这三种切片方法有何不同吗? 我看过文档,也看过这些 答案,但是我仍然发现自己无法解释这三者之间的区别。在我看来,它们在很大程度上似乎是可互换的,因为它们处于切片的较低级别。 例如,假设我们要获取的前五行。这三者如何运作? 有人可以提出三种用法之间的区别更清楚的情况吗? 问题答案: 注意:在熊猫版本0.20.0及更高版本中,已弃用,建议改为使用loc和iloc。我留下了ix完

    • 参考这个答案,Lev说包括开始和停止索引,所以我尝试了这个: 但它们也不同。为什么啊? 有人能帮我吗?

    • 假设我有下面的数据框,我想将

    • 主要内容:.loc[],.iloc[]在数据分析过程中,很多时候需要从数据表中提取出相应的数据,而这么做的前提是需要先“索引”出这一部分数据。虽然通过 Python 提供的索引操作符 和属性操作符 可以访问 Series 或者 DataFrame 中的数据,但这种方式只适应与少量的数据,为了解决这一问题,Pandas 提供了两种类型的索引方式来实现数据的访问。 本节就来讲解一下,如何在 Pandas 中使用 loc 函数和 iloc

    • 我对pandas的iloc函数有点困惑,因为我想选择一系列列,并且输出与预期不同。行选择也会发生同样的情况,因此我编写了一个小示例: 我想选择第1行到第2行结果是我所期望的: 如果我这样做我会认为我得到了相同的结果,但是没有: 我有点困惑,因为我希望这两个函数的行为相同,但如果我选择一个范围(从:到),这两个函数的输出都会不同。 似乎使用iloc需要将TO值设为1,才能获得与loc: 有人能给它点

    • 问题内容: 最近开始从我的安全位置(R)分支到Python,并且对中的单元格定位/选择感到有些困惑。我已经阅读了文档,但仍在努力了解各种本地化/选择选项的实际含义。 我为什么应该使用或超过最一般的选择? 我的理解是,,,和可以提供一些保证正确性是不能提供的,但我也看到了在那里往往是一刀切最快的解决方案。 请说明使用除?以外的任何东西背后的现实世界中的最佳实践推理。 问题答案: loc: 仅适用于索