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

熊猫-为什么iloc和loc的输出不同

唐恺
2023-03-14
d1=df.loc[(df.Age<50) & (df.Age>10)]
d2=df[(df['Age']<50) & (df['Age']>10)]
d1 == d2

d1.loc[[100]]

d1.iloc[[100], :]

参考这个答案,Lev说loc包括开始和停止索引,所以我尝试了这个:

d1.loc[[99], :]

但它们也不同。为什么啊?

有人能帮我吗?

共有1个答案

郎永福
2023-03-14

loc根据索引列筛选数据框。例如,当您调用df.loc[[100]]时,它将返回具有indexvalue100的行的内容。iloc根据位置筛选数据帧。df.iloc[[100]]将返回数据框的第100行(编号从0开始)。如果第100行的索引为100,则df.iloc[[100]]df.loc[[100]]将返回相同的行。

 类似资料:
  • 假设我有下面的数据框,我想将

  • 因此.loc和.iloc不是典型的函数。它们以某种方式使用[和]来包围参数,使其与普通数组索引相当。然而,我从未在另一个库中看到过这种情况(我可以想到,可能numpy就是这样的东西,我不知道它在技术上是如何工作的/在python代码中是如何定义的)。 本例中的括号是否只是函数调用的语法糖?如果是这样,那么如何让任意函数使用括号而不是括号呢?否则,它们的使用/定义有什么特殊之处?

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

  • 我有以下问题:在df中,我想要选择特定的行和特定的列,在这个选择中,获取第一个元素,并为它们分配一个新值。我天真地认为以下代码应该可以完成这项工作: 和都应将视图返回到df中,并且应覆盖该值。但是,数据帧不会改变。为什么? 我知道如何绕过它--首先使用创建一个新的df,然后使用更改值并更新原始df(如下所示)。 但是a)我不认为这是最佳的,b)我想知道为什么顶级解决方案不起作用。为什么它返回一个副

  • 有人能解释一下这两种切片方法有什么不同吗? 我看过文档,也看到过这些答案,但我还是发现自己无法理解这三种方法有什么不同。在我看来,它们在很大程度上是可以互换的,因为它们处于较低的切片级别。 例如,假设我们希望获得的前五行。这两个是怎么工作的? 谁能说出三种情况,在使用上的区别比较清楚? 从前,我也想知道这两个函数与有什么不同,但是已经从pandas 1.0中删除了,所以我不再关心了。

  • 所以我运行了一些示例: 类似于: 让我们使用和并确保得到相同的内容 这就是说,谁能提供关于方法可以做什么和不能做什么的指导呢?