You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Polars中实现Pandas.DataFrame.eval()的等效功能?

在Polars中实现类似Pandas DataFrame.eval的功能

Polars确实没有直接的DataFrame级eval方法,但可以通过以下几种方式实现等效功能:

方法1:用pl.Expr.parse()配合with_columns

将字符串表达式解析为Polars原生表达式,再通过with_columns添加新列:

import polars as pl

df = pl.DataFrame({"col1": [1, 2, 3], "col2": [4, 5, 6]})
# 解析表达式并生成新列
df = df.with_columns(pl.Expr.parse("col2 + col1").alias("col3"))

如果要同时计算多列,可批量传入解析后的表达式:

df = df.with_columns(
    pl.Expr.parse("col2 + col1").alias("col3"),
    pl.Expr.parse("col2 * col1").alias("col4")
)

方法2:使用Polars SQL语法

Polars支持SQL查询,可通过pl.sql()实现列计算:

df = pl.sql("SELECT *, col2 + col1 AS col3 FROM self", df)

这种方式适配熟悉SQL语法的用户,逻辑直观。

方法3:动态构建表达式(复杂场景适用)

如果表达式是动态生成的,可直接构建Polars表达式对象(注意安全风险):

expr_str = "col2 + col1"
# 仅在表达式来源完全可信时使用eval
new_col = eval(f"pl.col('col2') + pl.col('col1')")
df = df.with_columns(new_col.alias("col3"))

警告:eval()执行未知来源的表达式存在注入风险,需谨慎使用。

内容的提问来源于stack exchange,提问作者Murtaza Arif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:27:32