带有空字符串参数的 `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' 表达式与特定上下文(select
、filter
、with_column
等一起工作,以确定正在处理的数据。
根表达式的一些示例是 polars.col
、polars.apply
、polars.map
、polars.first
、polars.last
、polars.all
和 polars.any
。 (还有其他的。)
一旦我们声明了一个“根”表达式,我们就可以链接其他 more-generic 表达式来执行工作。例如,polars.col("my_col").sum().over('other_col').alias('name')
.
列表上下文
列表上下文与大多数上下文略有不同。在 List 上下文中,对于正在处理的数据没有歧义。只有一个数据列表。因此,polars.col
和 polars.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(“”)
.
相关的混淆
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' 表达式与特定上下文(select
、filter
、with_column
等一起工作,以确定正在处理的数据。
根表达式的一些示例是 polars.col
、polars.apply
、polars.map
、polars.first
、polars.last
、polars.all
和 polars.any
。 (还有其他的。)
一旦我们声明了一个“根”表达式,我们就可以链接其他 more-generic 表达式来执行工作。例如,polars.col("my_col").sum().over('other_col').alias('name')
.
列表上下文
列表上下文与大多数上下文略有不同。在 List 上下文中,对于正在处理的数据没有歧义。只有一个数据列表。因此,polars.col
和 polars.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(“”)
.