我偶然发现了这个问题,deepcopy 实际上并没有复制带有“动态”添加属性的整个对象。为什么会这样,有什么解决办法吗?
例子:
import pandas as pd
from copy import deepcopy
frame_one = pd.DataFrame({'hello': [1,2,3], 'world': [4,5,6]})
frame_one.name = 'foo'
frame_two = deepcopy(frame_one)
frame_two.name
错误:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "a_path\pandas\core\generic.py", line 5478, in __getattr__
return object.__getattribute__(self, name)
AttributeError: 'DataFrame' object has no attribute 'name'
这些属性不会被复制,因为 pandas 覆盖了deepcopy。
您可以在第一个 deepcopy 之后添加:
frame_two.__dict__ = deepcopy(frame_one.__dict__)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句