有没有办法允许 Polars 中的表达式引用先前的别名表达式?例如,定义两个新列的代码会出错,因为第二个新列引用第一个:
import polars as pl
df = pl.DataFrame(dict(x=[0, 0, 1]))
df.select([
(pl.col('x') + 1).alias('y'),
(pl.col('y') * 2).alias('z')],
)
# pyo3_runtime.PanicException: called `Result::unwrap()` on an `Err` value:
# NotFound("Unable to get field named \"y\". Valid fields: [\"x\"]")
Run Code Online (Sandbox Code Playgroud)
该错误表明失败是由于第一个别名对第二个表达式不可见而导致的。有没有一种简单的方法可以让这项工作发挥作用?
上下文中的所有极坐标表达式都是并行执行的。因此它们不能引用尚不存在的列。
上下文是:
df.with_columnsdf.selectdf.groupby(..).agg这意味着您需要对引用其他表达式输出的表达式强制执行顺序执行。
对于你的情况我会这样做:
(df.with_column(
(pl.col('x') + 1).alias('y')
).select([
pl.col('y'),
(pl.col('y') * 2).alias('z')
]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1821 次 |
| 最近记录: |