使用df.loc修改DataFrame时赋值所得副本同步更新,该现象是否正常?
Pandas赋值同步修改问题解答
结论
该现象属于Pandas的正常运行表现。
原因说明
- Python的普通赋值语句不会生成新对象,只是为现有内存对象绑定额外的变量名,你执行
copy_df = name_df时,本质是给name_df指向的DataFrame对象新增了一个别名,两个变量指向同一块内存地址的同一个对象。 - 因此不管修改
name_df还是copy_df,本质都是修改同一个内存里的数据,两个变量访问时都会同步显示修改结果。
正确创建独立副本的方案
如果需要生成和原DataFrame完全独立、修改互不影响的副本,需要调用Pandas提供的copy()方法:
# 深拷贝,生成完全独立的新DataFrame copy_df = name_df.copy()
copy()默认执行深拷贝,会把原DataFrame的所有数据完整复制到新的内存空间,后续对原DataFrame的任何修改都不会同步到新生成的副本上。
内容的提问来源于stack exchange,提问作者jgoh
相关产品推荐
相关产品推荐

