使用写入时复制就地更改列

Change column in-place with copy-on-write

提问人:Michel de Ruiter 提问时间:10/9/2023 更新时间:10/9/2023 访问量:57

问:

我有一个很大的 DataFrame。我已经启用了 copy_on_write,预计这是 3.0 的默认值。我想限制某些列的值(就地)。喜欢这个:

import pandas as pd

pd.options.mode.copy_on_write = True
df = pd.DataFrame({'a': '.', 'x': [1, 2, 3]})
df['x'].clip(lower=0, inplace=True)

这给了我一个:ChainedAssignmentError

正在尝试在 DataFrame 或 Series 通过使用就地的链式赋值 方法。
使用 Copy-on-Write 模式时,此类就地方法从不 用于更新原始 DataFrame 或 Series,因为 我们设置值的中间对象始终表现为 复制。

例如,在执行 时,尝试 使用,以执行 对原始对象进行就地操作。df[col].method(value, inplace=True)df.method({col: value}, inplace=True)

这应该如何工作?我尝试了最后一段中建议的变体和其他东西,但我一直收到错误。

Python pandas 就地 写入时复制

评论

0赞 mozway 10/9/2023
在这里使用 CoW 的预期目标是什么?
0赞 Michel de Ruiter 10/9/2023
只是在为 3.0 中的默认值做准备......
0赞 Laurent 10/14/2023
嗨,不确定为什么这里需要:如果您只有一个语句,为什么不重新分配给该列?如果您需要在链式分配中进行剪裁,为什么不使用呢?inplaceassign
0赞 Michel de Ruiter 10/16/2023
首先,我希望能节省内存,这很紧张。inplace

答: 暂无答案