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

loc和iloc的类型是什么?(括号与括号)

许胡非
2023-03-14

我来自C背景,最近开始学习python。我正在学习索引和选择数据。我遇到了. iloc[]在类系列DataFrame面板在熊猫库。我不明白什么是. iloc?是功能还是属性?很多时候,我错误地使用()而不是[],并且没有得到实际的结果(但它不会给我带来错误)。

例子:

In [43]: s = pd.Series(np.arange(5), index=np.arange(5)[::-1], dtype='int64')

In [44]: s[s.index.isin([2, 4, 6])]
Out[44]: 
4    0
2    2
dtype: int64

In [45]: s.iloc(s.index.isin([2,4,6]))
Out[45]: <pandas.core.indexing._iLocIndexer at 0x7f1e68d53978>

In [46]: s.iloc[s.index.isin([2,4,6])]
Out[46]: 
4    0
2    2
dtype: int64

有谁能告诉我在哪里可以更多地研究这类运营商。

共有2个答案

卞轶
2023-03-14

. iloc是一个类实例。

pd.DataFrame().iloc
Out[2]: <pandas.core.indexing._iLocIndexer at 0x97a2470>

来源:熊猫源代码-indexing.py#L1626

闾丘正志
2023-03-14

实用的答案是:您应该将ilocloc分别视为python列表和字典的扩展,并将它们视为查找,而不是函数或方法调用。因此,根据python语法,始终使用[]而不是()

>>> ser = pd.Series( { 'a':3, 'c':9 } )

>>> ser.loc['a']    # pandas dictionary syntax (label-based)
3
>>> ser.iloc[0]     # pandas list/array syntax (location-based)
3

数据帧基本上是一样的,只是需要指定一个额外的维度,这也是ilocloc变得更有用的地方,但这超出了这个问题的范围。

更深层次的答案是:如果你真的想从更深层次上理解这一点,你需要理解\uuu getitem\uu。你可以从这里开始学习一些基础知识。@ayhan在上述评论中提供的第二个链接中的答案也非常好,与您的问题非常相关。

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

  • 这里我理解哈希(#)符号将定义为本地模板变量,但是前面的星号是什么意思呢?还有,有必要吗? 下面是使用括号的示例: 我有点理解周围的括号将它绑定到HTML属性/Angular指令。这是否意味着它们是Angular计算表达式的指针?就像是Angular 1中的的等价物? 我猜真正的问题是,这些符号在Angular 2中有特殊的含义吗,知道何时使用每一个的最简单的方法是什么?谢谢!!

  • 问题内容: 而且我仍然无法理解花括号的工作原理,特别是由于诸如简单程序这样的页面: http://wiki.python.org/moin/SimplePrograms 在各处使用大括号。我了解方括号和规则的圆括号,但是我不知道“定义字典”的含义或它们应该代表的含义。 问题答案: Python中使用“大括号”来定义字典。字典是一种将一个值映射到另一个值的数据结构,就像英语词典如何将单词映射到其定义

  • 问题内容: 它们都有效吗?是出于某些原因而首选? 问题答案: 方括号是列表,括号是元组。 列表是可变的,这意味着您可以更改其内容: 而元组不是: 另一个主要区别是,元组是可哈希的,这意味着您可以将其用作字典的键。例如: 请注意,正如许多人指出的那样,您可以将元组加在一起。例如: 但是, 这并不意味着元组是可变的 。在上面的示例中,通过将两个元组加在一起作为参数来构造 新的 元组。原始元组未修改。为

  • 问题内容: 我在jQuery文件中找到了这个: 花括号做什么? 问题答案: 在您的情况下,这是一个传递给CSS函数的对象。 在这里你也可以使用 这是物体的另一个例子

  • 问题内容: 我正在阅读一些JMockit示例并找到以下代码: 通用标识符中的代字号是什么意思?我知道这是一元按位NOT运算符,但在这里看不到操作数。 另外,我尝试编译它并出现错误。我只是想念什么吗? 问题答案: 它只是“与声明中相同”的简写。 一些IDE(例如IntelliJ)也使用此功能。 磁盘上的文件没有此标记,这只是IDE GUI中的压缩。