我在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的最佳方法是什么?
提前致谢。
答案 0 :(得分:1)
dfb = dfa
只是将变量设置为指向同一个对象。如果更新dfa,则更新与dfb相同的对象。这就是熊猫的工作方式。
如果你真的想创建一个dfa的副本:
dfc = dfa.copy()
如何检查您的变量是否指向数据帧的副本是否指向同一数据帧:
dfb is dfa
True
dfc is dfa
False
这不是腐败。