2016-05-29 5 views
2

Я пытаюсь узнать, что находится под капотом в библиотеке pandas, и мне интересно узнать конкретный фрагмент кода в классе DataFrame. В модуле класса появляется следующий код.Что делает _constructor в классе DataFrame

@property 
def _constructor(self): 
    return DataFrame 

_constructor_sliced = Series 

Глядя на метод _constuctor. Что оно делает? Кажется, все, что он делает, это вернуть DataFrame, но я не понимаю этого значения. Кроме того, следующая строка _constructor_sliced ​​я тоже не понимаю.

Какова функция этих строк кода?

https://github.com/pydata/pandas/blob/master/pandas/core/frame.py#L199

ответ

2

_constructor(self) частная функция член, которая возвращает пустой DataFrame объект. Это полезно, когда результат операции создает новый объект DataFrame.

Например, функция dot() элемента, который делает матричное умножение с другой DataFrame объекта и возвращает новый DataFrame вызовов _constructor для того, чтобы создать новый экземпляр DataFrame объекта для того, чтобы вернуть его в качестве результата операции точки.

def dot(self, other): 
    """ 
    Matrix multiplication with DataFrame or Series objects 

    Parameters 
    ---------- 
    other : DataFrame or Series 

    Returns 
    ------- 
    dot_product : DataFrame or Series 
    """ 
... 

    if isinstance(other, DataFrame): 
     return self._constructor(np.dot(lvals, rvals), 
           index=left.index, 
           columns=other.columns) 

Новый экземпляр построен с скалярного произведения элементов в self и другой аргумент в Numpy массиве.

Аналогичным образом для частного лица _constructor_sliced.

_constructor_sliced = Series 

Этот объект используется, когда результат операции является новым Series объектом, а не новый объект DataFrame.