ฉันพยายามใช้ องค์ประกอบ กับ pandas.DataFrame ด้วยวิธีต่อไปนี้ แต่มันทำให้ฉันมีข้อผิดพลาดเมื่อฉันพยายามคัดลอกวัตถุ
import numpy as np
import pandas as pd
import copy
class Foo(object):
"""
Foo is composed mostly of a pd.DataFrame, and behaves like it too.
"""
def __init__(self, df, attr_custom):
self._ = df
self.attr_custom = attr_custom
# the following code allows Foo objects to behave like pd.DataFame,
# and I want to keep this behavior.
def __getattr__(self, attr):
return getattr(self._, attr)
df = pd.DataFrame(np.random.randint(0,2,(3,2)), columns=['A','B'])
foo = Foo(df)
foo_cp = copy.deepcopy(foo)
ข้อผิดพลาดที่ฉันได้รับ:
---> 16 foo_cp = copy.deepcopy(foo)
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.pyc in deepcopy(x, memo, _nil)
188 raise Error(
189 "un(deep)copyable object of type %s" % cls)
--> 190 y = _reconstruct(x, rv, 1, memo)
191
192 memo[d] = y
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.pyc in _reconstruct(x, info, deep, memo)
341 slotstate = None
342 if state is not None:
--> 343 y.__dict__.update(state)
344 if slotstate is not None:
345 for key, value in slotstate.iteritems():
TypeError: 'BlockManager' object is not iterable
คำถามของฉัน:
- มีความคิดว่าเกิดอะไรขึ้นที่นี่?
- วิธี "แนะนำ" ในการใช้องค์ประกอบกับ pandas.DataFrame คืออะไร
- หากด้วยเหตุผลบางประการ การใช้
_
เป็นชื่อของแอตทริบิวต์จำลอง โปรดแจ้งให้เราทราบด้วยเหตุผลบางประการ