Pandas如何正确复制DataFrame避免改动原始数据
问题原因
在pandas中,final_df = main_df 属于浅拷贝,仅给原始DataFrame对象绑定了新的变量名,两个变量指向内存中的同一个数据对象。因此对final_df做的所有修改,都会直接作用到main_df对应的内存数据上,最终出现两个DataFrame同步变更的情况。
解决方案
要生成完全独立的操作副本,你需要使用pandas提供的copy()方法执行深拷贝,代码修改如下:
final_df = main_df.copy() final_df['new_column'] = final_df['b']*0.05
补充说明
- pandas的
copy()方法默认deep=True,普通数值型DataFrame场景下可以省略该参数。如果你的DataFrame包含列表、自定义对象等复合数据类型,建议显式指定deep=True,确保所有层级的数据都完成独立拷贝,避免出现关联修改的问题。 - 不建议直接使用Python内置
copy模块处理pandas对象,pandas原生copy()方法对DataFrame的结构做了专门优化,兼容性和执行效率都更优。
内容的提问来源于stack exchange,提问作者Karanam Krishna
相关产品推荐
相关产品推荐

