带有空字符串参数的 `pl.col("")` 表达式的确切含义是什么

What is the exact meaning of `pl.col("")` expression with empty string argument

polars-book 中关于 'list context' 的部分中的示例使用 pl.col("") 表达式并将空字符串 "" 作为参数。

# the percentage rank expression
rank_pct = pl.col("").rank(reverse=True) / pl.col("").count()

根据上下文和输出,我可以猜出 pl.col("") 表达式的作用。但是 API 文档似乎没有涵盖空字符串作为 pl.col 参数的情况,我想知道这个用例中的确切含义。非常感谢任何有用的答案!

准确的意思是作为一个'root'表达式在List上下文中开始一个表达式链,即在arr.eval(....)中。我需要退后一步来解释...

'Root' 表达式

一般来说,只允许某些类型的表达式作为表达式的开始(或者作为 'root' 的表达式)。这些 'root' 表达式与特定上下文(selectfilterwith_column 等一起工作,以确定正在处理的数据。

根表达式的一些示例是 polars.colpolars.applypolars.mappolars.firstpolars.lastpolars.allpolars.any。 (还有其他的。)

一旦我们声明了一个“根”表达式,我们就可以链接其他 more-generic 表达式来执行工作。例如,polars.col("my_col").sum().over('other_col').alias('name').

列表上下文

列表上下文与大多数上下文略有不同。在 List 上下文中,对于正在处理的数据没有歧义。只有一个数据列表。因此,polars.colpolars.first 被选为在列表上下文中使用的“根”表达式。

通常,polars.col 根表达式包含信息,例如表示列名的字符串或表示多列的通配符表达式。但是,在 List 上下文中不需要这样做。只有一个选项 - 单个列表本身。

因此,提供给 polars.col 的任何字符串在列表上下文中都会被忽略。例如,从 Polars Guide 的代码中,此代码也有效:

# Notice that I'm referring to columns that do not exist...
rank_pct = pl.col("foo").rank(reverse=True) / pl.col("bar").count()

由于提供给 polars.col 表达式的任何字符串在列表上下文中都将被忽略,因此通常会提供一个空字符串 "",只是为了防止不必要的混乱。

编辑:新 polars.element 表达式

Polars 现在有一个 polars.element 表达式,专为在列表计算上下文中使用而设计。使用 polars.element 现在被认为是列表上下文的惯用语,因为它避免了与使用 col(“”).

相关的混淆