Python Pandas赋值后df与df_LtC未分离,df_LtC莫名新增rolling列问题
pandas修改赋值后的DataFrame同步修改原对象问题解答
问题原因
Python中对DataFrame这类可变对象执行普通赋值操作=时,是引用传递,不会生成新的独立对象。执行df=df_LtC仅相当于给内存中的同一份DataFrame数据绑定了两个变量名,两者指向完全相同的内存地址,因此修改df的列结构、数值时,df_LtC也会同步变化。
解决方案
要生成与原DataFrame完全独立的副本,调用pandas内置的copy()方法即可,默认执行深拷贝,会将原数据完整复制到新的内存空间,后续两个对象的操作互不影响。
正确代码示例:
df = df_LtC.copy() df["rolling"] = df["ln_ret"].rolling(window=2).mean() * 2
如果确认不需要复制嵌套的可变性对象,可以使用浅拷贝df = df_LtC.copy(deep=False)减少内存占用,普通数据分析场景下使用默认的深拷贝即可。
内容的提问来源于stack exchange,提问作者arrabattapp man
相关产品推荐
相关产品推荐

