我试图了解pandas库中的内容,我对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
答案 0 :(得分: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
对象时,将使用此对象。