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

修改新pandas DataFrame时旧DataFrame值意外变更问题咨询

问题产生原因

Python中的直接赋值操作y = x并没有创建新的DataFrame对象,只是给内存中已有的x指向的DataFrame对象新增了一个别名y,二者实际指向完全相同的内存地址。
由于Pandas DataFrame是可变对象,修改y的属性和内容本质就是修改二者共同指向的原始对象,所以会出现修改y同步影响x的现象。

避免方案

如果需要得到独立的新DataFrame,对新对象的修改不影响原始对象,需要调用copy()方法显式完成对象拷贝:

x = pd.DataFrame(data = {"test":["mkt1","mkt2","mkt3"],
                         "test2":["cty1","cty2","cty3"]})
# 显式深拷贝,生成完全独立的新对象
y = x.copy()
y["test"] = "boom"
print(x)

运行上述代码后x的内容不会被y的修改影响。
额外说明:copy()方法默认参数为deep=True即深拷贝,会完整复制对象本体和内部所有数据,满足绝大多数使用场景;如果传入deep=False为浅拷贝,仅复制对象的容器结构,内部存储的元素还是引用共享,修改嵌套的可变类型内容时仍可能同步影响原对象,无特殊需求直接使用默认深拷贝即可。

内容的提问来源于stack exchange,提问作者HARI KRISHNA BANDARU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:45:02