修复明显的Anaconda Python腐败修复

时间:2017-06-06 03:12:25

标签: python pandas memory-corruption

我在Spyder 3.1.4中使用Anaconda Python 2.7在Windows 7.0 Professional中进行开发。我也在使用熊猫。

在对程序进行大量工作后,我遇到了一个奇怪的问题。 Python / Pandas开始以相同的方式处理具有不同名称的两个相同的数据帧。

我将数据帧定义如下:

dfa = pd.DataFrame(np.empty(0,dtype=[('Date','datetime64[ns]'),
                                    ('column1', 'string'),
                                    ('column2','string'),
                                    ('column3','string')]))

我现在复制这个(空)数据帧:

dfb = dfa

在此之后,我追加dfa如下:

dfa.loc[indexvalue,:] = ([item1,item2,item3....])

这种方法正常工作,直到涉及多次运行(测试代码的其他部分)后,此命令也开始同时更新dfb。使用dfb的类似操作会导致对dfa

的相同更新

我不是软件包安装方面的专家,并且已经广泛检查了我的代码。这似乎是一种腐败。

有人可以建议如何最好地处理这个问题吗?我不想开始拆开我的Anaconda装置。如果这确实是环境腐败,修复/重新安装Anaconda和Spyder的最佳方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

dfb = dfa只是将变量设置为指向同一个对象。如果更新dfa,则更新与dfb相同的对象。这就是熊猫的工作方式。

如果你真的想创建一个dfa的副本:

dfc = dfa.copy()

如何检查您的变量是否指向数据帧的副本是否指向同一数据帧:

dfb is dfa
True

dfc is dfa
False

这不是腐败。