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

在Polars现有DataFrame中添加列的正确方法探讨

在Polars中添加列的正确做法

你用df = df.with_columns(...)的方式添加列完全正确,这是Polars官方推荐的标准用法。

为什么要重新赋值?

Polars的核心设计之一是不可变性:所有DataFrame对象默认是只读的,任何修改操作(包括添加、删除列,修改数据)都不会直接改动原对象,而是返回一个全新的DataFrame。这种设计保证了线程安全,也让链式调用、回溯操作更可靠。

会不会浪费资源?

完全不用担心“重写整个DataFrame”的性能问题——Polars内部做了零拷贝优化:新生成的DataFrame会直接复用原DataFrame中未修改的列的数据,只有新增的列会被创建,不会复制整个数据集的内容。比如你原DataFrame有10列,新增1列,实际只需要生成这1列的数据,其余10列都是直接引用原数据,资源消耗极低。

有没有“原地修改”的方式?

Polars提供了with_columns_inplace()方法可以直接修改原DataFrame,但这种写法不推荐:原地修改会破坏不可变性,容易在多线程环境、复杂计算流程中引发意外的bug,也不利于代码的可读性和调试。官方始终建议使用返回新对象并重新赋值的方式。

示例代码

推荐的标准写法:

import polars as pl

# 初始化DataFrame
df = pl.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]})
# 添加新列,重新赋值给df
df = df.with_columns(new_column=pl.lit("some_text"))

不推荐的原地修改写法:

# 直接修改原对象,不推荐
df.with_columns_inplace(new_column=pl.lit("some_text"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:57:03