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

修改一个Pandas DataFrame时其余关联DataFrame也同步变化的原因及解决办法

问题原因

这是Python中可变对象的引用传递机制导致的:

  • Pandas DataFrame属于可变对象,你执行df1 = dfnan、df2 = dfnan、df3 = dfnan时,没有生成三个独立的DataFrame实例,只是给同一个底层的dfnan对象绑定了三个不同的变量名,三个变量指向内存中完全相同的对象。
  • 后续你对df1、df2的所有修改,本质上都是修改同一个内存地址里的对象,所以三个变量的取值会同步变动,最后全部变成1。

解决方法

如果需要生成独立的DataFrame副本,需要调用.copy()方法显式完成对象复制,只需要修改初始化部分的代码即可:

import numpy as np
import pandas as pd

# 生成全NaN的基础DataFrame
data = np.empty((15, 10)) 
data[:] = np.nan
dfnan = pd.DataFrame(data)

# 为每个变量创建独立副本
df1 = dfnan.copy()
df2 = dfnan.copy()
df3 = dfnan.copy()

修改后再执行你写的循环代码,就可以得到预期结果:df1全为0,df2全为1,df3保持全为NaN。

另外补充优化建议:你写的两个for循环可以直接用Pandas向量化操作代替,运行效率更高,写法也更简洁:

# 替代第一个循环
df1.iloc[:] = 0
# 替代第二个循环
df2.iloc[:] = df1 + 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:54:03