相关疑难解决方法(0)

__str__和__repr__之间的区别?

之间有什么区别__str____repr____str__

python repr magic-methods

2545
推荐指数
21
解决办法
61万
查看次数

如何继承pandas DataFrame?

子类化pandas类似乎是一个常见的需求,但我找不到关于这个主题的参考.(似乎熊猫开发者仍在努力:https://github.com/pydata/pandas/issues/60).

关于这个主题有一些SO主题,但我希望这里有人可以提供一个更系统的帐户,目前最好的方法是将pandas.DataFrame子类化,满足两个,我认为,一般要求:

import numpy as np
import pandas as pd

class MyDF(pd.DataFrame):
    # how to subclass pandas DataFrame?
    pass

mydf = MyDF(np.random.randn(3,4), columns=['A','B','C','D'])
print type(mydf)  # <class '__main__.MyDF'>

# Requirement 1: Instances of MyDF, when calling standard methods of DataFrame,
# should produce instances of MyDF.
mydf_sub = mydf[['A','C']]
print type(mydf_sub)  # <class 'pandas.core.frame.DataFrame'>

# Requirement 2: Attributes attached to instances of MyDF, when calling standard 
# methods of DataFrame, should still attach to the output. …
Run Code Online (Sandbox Code Playgroud)

python subclassing dataframe pandas

30
推荐指数
2
解决办法
1万
查看次数

如何子类化numpy.ndarray的子​​类

我正在努力子类化我自己的numpy.ndarray子类.我真的不明白问题是什么,并希望有人解释在下列情况下出了什么问题,以及如何做我正在尝试做的事情.

我想要实现的目标:

我有一个numpy.ndarry的子类,其行为符合我的要求(下面的代码中的A类).我想子类A(下面的代码中的B类),以便B包含其他信息(名称)和方法(装饰的.simple_data方法).

情况1:

import numpy as np

class A(np.ndarray):

    def __new__(cls,data):
        obj = np.asarray(data).view(cls)
        return obj

    def __array_finalize(self,obj):
        if obj is None: return

class B(A):

    def __init__(self,data,name):
        super(B,self).__init__(data)
        self.name = name

    @property
    def simple_data(self):
        return [data[0,:],data[:,0]]

if __name__ == '__main__':
    data = np.arange(20).reshape((4,5))
    b = B(data,'B')
    print type(b)
    print b.simple_data
Run Code Online (Sandbox Code Playgroud)

运行此代码会生成输出:

Traceback (most recent call last):
  File "ndsubclass.py", line 24, in <module>
    b = B(data,'B')
TypeError: __new__() takes exactly 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)

我假设这与B的构造中的'name'变量有关,并且由于A是numpy.array的子​​类,因此在B的init方法之前调用A的方法.因此,为了解决这个问题,我假设B还需要一个适当处理附加参数的新 …

python numpy subclassing

6
推荐指数
1
解决办法
1577
查看次数

标签 统计

python ×3

subclassing ×2

dataframe ×1

magic-methods ×1

numpy ×1

pandas ×1

repr ×1