为什么Pandas的dtf.loc[]中使用方括号?

2024-09-27 04:20:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道为什么它是dtf.loc[x]而不是dtf.loc(x)。我读过loc是一个属性,所以它是有意义的,因为它不是一个函数调用,但现在我不知道为什么有人把它作为属性(不太了解属性)而不是函数-这对我来说更直观


Tags: 函数属性loc直观意义函数调用dtf
1条回答
网友
1楼 · 发布于 2024-09-27 04:20:29

<;咆哮>;因为熊猫不是Python</咆哮>

更严重的是,Pandas是一个很好的库,它使用poserfulnumpy(部分操作系统scipy)模块以C速度处理大型阵列。但这是以一些警告为代价的:

  • 为了与numpy保持一致,索引接受整数或切片的元组。在numpy中,这是必须的,以便能够矢量化(使用C高速例程)访问
  • loc只是返回索引器的数据帧的属性。它必须是特定属性,因为df[x]已定义为df数据帧的x

它可能仅仅是一个函数,对Python用户的干扰会更小。但也必须明确这是一种索引访问。而且(我最初咆哮的原因),numpy的效率和一致性在与核心Python的一致性中更为重要。一个很好的例子是两个系列之间的相等。为了与numpy保持一致,is也是一个系列,不是布尔值。但它只是破坏了一些Python好东西,阻止了使用in来检查Series的Python容器是否包含特定的Series:

a = pd.Series([1, 2, 3])
b = pd.Series([4, 5, 6])

pd.Series([1, 2, 3]) in [a, b]

提出:

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    pd.Series([1, 2, 3]) in [a, b]
  File "...Python39\site-packages\pandas\core\generic.py", line 1442, in __nonzero__
    raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

从中可以学到什么:只需接受这样一个事实,即Pandas语法有时与Python的正常用法不一致

相关问题 更多 >

    热门问题