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

为何向DataFrame浅拷贝新增列未同步至原DataFrame?

为什么Pandas浅拷贝后新增列,原DataFrame没同步变化?

核心原因:浅拷贝共享的是底层数据块,而非DataFrame的列结构

Pandas里的copy(deep=False)(浅拷贝),本质是创建一个新的DataFrame对象:

  • 新对象和原对象共享底层的数值数据数组(比如示例中原values列的数据)
  • 但新对象的列索引、行索引以及列名到数据块的映射字典是独立的副本

当你用loc[:, 'new_col']或直接['new_col']给copy_df新增列时,你是在修改拷贝对象自己的列映射字典,给它添加了一个新的列条目。这个操作只影响copy_df的结构,不会触动原old_df的列映射字典,所以原DataFrame不会出现新增的new_col列。

验证:修改现有列会同步变化

如果是修改已有列的内容,就能看到浅拷贝的同步效果:

copy_df['values'] = [100, 200, 300, 400]
print(old_df)  # 输出的values列会变成[100,200,300,400]

这是因为values列的数据块是两个DataFrame共享的,修改这个数据块的内容会同时反映在两个对象里。

总结

浅拷贝的“同步”仅针对已有数据块的内容修改,而增删列这种结构修改只会作用于当前的DataFrame对象,和原对象无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:22:32