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

基于Polars DataFrame现有列创建新列的问题求助

解决Polars DataFrame新增列的问题

你的代码有两个核心问题:

  • 语法错误:with_columns里多了一层冗余括号,末尾的逗号也无必要,直接传入表达式即可
  • map_elements的使用不够规范,且Polars优先推荐向量化操作(效率远高于逐元素的map_elements)

修复语法错误的基础版本

如果非要用map_elements,先把语法修正:

import polars as pl
# 需确保df已完成初始化
df = df.with_columns(
    pl.col('old_col').map_elements(lambda x: func(x)).alias("new_col")
)

更高效的向量化写法(优先推荐)

如果你的func逻辑能用Polars内置的向量化API实现,绝对不要用map_elements。比如:

  • 计算数值平方:
df = df.with_columns(
    (pl.col('old_col') ** 2).alias("new_col")
)
  • 字符串转大写:
df = df.with_columns(
    pl.col('old_col').str.to_upper().alias("new_col")
)

必须用自定义函数的场景

如果func是无法用向量化API实现的复杂逻辑,使用map_elements时最好指定返回数据类型,避免Polars自动推断出错:

def custom_func(x):
    # 自定义复杂逻辑示例
    return f"processed_{x}"

df = df.with_columns(
    pl.col('old_col').map_elements(custom_func, return_dtype=pl.Utf8).alias("new_col")
)

内容的提问来源于stack exchange,提问作者Joseph K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:05:24