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

Python中DataFrame赋值是否指向同一内存对象?

Python中DataFrame的引用机制解析

你猜的没错,Python里的变量赋值(比如df = myObject.df)并不是创建副本,而是让新变量df和myObject.df指向同一个内存中的DataFrame对象,和C语言里的指针概念类似,Python里称这种机制为“引用传递”。

原因解析:

  • Pandas的DataFrame属于可变对象,对可变对象进行赋值操作时,传递的是对象的引用,而非整个对象的内容拷贝。
  • 当你执行df["error_value"] = ""时,本质是直接修改这个被共享的DataFrame对象本身,所以myObject.df作为同一对象的引用,自然会同步看到这个新增列的变化。

解决方法:创建独立副本

如果想让df成为原DataFrame的独立副本,避免修改原对象,需要使用DataFrame的copy()方法:

df = myObject.df.copy()
df["error_value"] = ""  # 此时仅修改df,myObject.df不会受影响
  • 默认的copy()是浅拷贝,若DataFrame包含嵌套的可变对象(如列表),需使用copy(deep=True)进行深拷贝,确保所有嵌套层级的对象都被独立复制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:21:05