use*_*844 5 python inheritance composition pandas
我很想继承并继承DataFrame用例的pandas子类,但是从我读到的有关良好编程和Pandas内部文档的所有内容来看,这样做是不正确的。
举一个简化的例子,我的行DataFrame是人,字段是身高和体重。我很想继承子类,以便可以使用的方法bmi()。我将按以下方式进行操作:
将熊猫作为pd导入
class People(pd.DataFrame):
def __init__(self, *args, **kwargs):
super(People, self).__init__(*args, **kwargs)
def bmi(self):
return self['weight'] / self['height'] ** 2 x 703
people = People([[172, 74], [100, 60]])
bmi = people.bmi()
Run Code Online (Sandbox Code Playgroud)
我将如何使用合成来做到这一点?会是这样吗?
class People(object):
def __init__(self, data):
self.data = pd.DataFrame(data)
def bmi(self):
return self.data['weight'] / self.data['height'] ** 2 x 703
people = People([[172, 74], [100, 60]])
bmi = people.bmi()
Run Code Online (Sandbox Code Playgroud)
如果没有,我该怎么办?如果是这样,为什么会更好?
注意:我意识到这是一个过于简化的示例。