为 Polar 表达式提供文字数组
Supply a literal array to a Polar expression
如何在 Polars 表达式中定义文字数组?例如,如果我想过滤表达式是否为真以及掩码中的给定值是否为真。
import polars as pl
df = pl.DataFrame(dict(x=[1,2,3,4,5,6]))
mask = [True, True, False, False, True, True]
df.filter(pl.col('x') % 2 == 0 & pl.lit(mask))
# could not convert value [True, True, False, False, True, True] as a Literal
对于这个特定的例子,我可以在数据框上使用 []
索引,然后进行过滤,但对于更复杂的表达式,如果我可以将数组插入到表达式中会更容易。
df.filter((pl.col("x") % 2 == 0) & pl.Series(mask))
注意添加的括号。 (pl.col("x") % 2 == 0)
产生一系列布尔值,然后是 bit-anded row-wise 和 pl.Series(mask)
.
使用 Series 还可以设置值的数据类型,这可以派上用场。
Series constructor 的文档解释了更多内容。
如何在 Polars 表达式中定义文字数组?例如,如果我想过滤表达式是否为真以及掩码中的给定值是否为真。
import polars as pl
df = pl.DataFrame(dict(x=[1,2,3,4,5,6]))
mask = [True, True, False, False, True, True]
df.filter(pl.col('x') % 2 == 0 & pl.lit(mask))
# could not convert value [True, True, False, False, True, True] as a Literal
对于这个特定的例子,我可以在数据框上使用 []
索引,然后进行过滤,但对于更复杂的表达式,如果我可以将数组插入到表达式中会更容易。
df.filter((pl.col("x") % 2 == 0) & pl.Series(mask))
注意添加的括号。 (pl.col("x") % 2 == 0)
产生一系列布尔值,然后是 bit-anded row-wise 和 pl.Series(mask)
.
使用 Series 还可以设置值的数据类型,这可以派上用场。
Series constructor 的文档解释了更多内容。