首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从稀疏矩阵导入Modin AttributeError

从稀疏矩阵导入Modin AttributeError
EN

Stack Overflow用户
提问于 2021-12-20 14:01:00
回答 1查看 129关注 0票数 1

我正在尝试使用Modin包导入一个用with (特别是scipy.sparse.csr_matrix)创建的稀疏矩阵。

调用该方法:

代码语言:javascript
复制
from modin import pandas as pd
pd.DataFrame.sparse.from_spmatrix(mat)

我得到了以下AttributeError:

代码语言:javascript
复制
AttributeError                            Traceback (most recent call last)
C:\Users\BERGAM~1\AppData\Local\Temp/ipykernel_37436/3032405809.py in <module>
----> 1 pd.DataFrame.sparse.from_spmatrix(mat)

C:\Miniconda3\envs\persolite_v0\lib\site-packages\modin\pandas\accessor.py in from_spmatrix(cls, data, index, columns)
    109     @classmethod
    110     def from_spmatrix(cls, data, index=None, columns=None):
--> 111         return cls._default_to_pandas(
    112             pandas.DataFrame.sparse.from_spmatrix, data, index=index, columns=columns
    113         )

C:\Miniconda3\envs\persolite_v0\lib\site-packages\modin\pandas\accessor.py in _default_to_pandas(self, op, *args, **kwargs)
     78             Result of operation.
     79         """
---> 80         return self._parent._default_to_pandas(
     81             lambda parent: op(parent.sparse, *args, **kwargs)
     82         )

AttributeError: 'function' object has no attribute '_parent'

当使用最初的熊猫API时,它是有效的。

有类似的问题吗?谢谢你的支持

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-21 14:43:53

这是个窃听器。此包中的代码使用类方法调用实例方法,因此self引用不绑定到推理,而是对第一个参数(这里是一个函数)的引用。

这是失败的代码:

代码语言:javascript
复制
class BaseSparseAccessor:
    
    def _default_to_pandas(self, op, *args, **kwargs):
        return self._parent._default_to_pandas(
            lambda parent: op(parent.sparse, *args, **kwargs)
        )

class SparseFrameAccessor(BaseSparseAccessor):

    @classmethod
    def from_spmatrix(cls, data, index=None, columns=None):
        return cls._default_to_pandas(
            pandas.DataFrame.sparse.from_spmatrix, data, index=index, columns=columns
        )

下面是一个简单的例子,说明为什么会失败:

代码语言:javascript
复制
class A:
    
    _parent = 0
    
    def a_method(self, op, **args):
        self._parent = op(self._parent, **args)

class B(A):
    
    @classmethod
    def b_method(cls, data, **args):
        return cls.a_method(sum, data, **args)

当您调用b_method时(B是否被实例化为实例并不重要),它将失败,因为a_method中的self是函数sum,而不是类或实例引用。

代码语言:javascript
复制
>>> B.b_method(20)

AttributeError                            Traceback (most recent call last)
<ipython-input-17-3914ce57d001> in <module>
----> 1 B.b_method(20)

<ipython-input-11-a25ce2c0614c> in b_method(cls, data, **args)
     12     @classmethod
     13     def b_method(cls, data, **args):
---> 14         return cls.a_method(sum, data, **args)

<ipython-input-11-a25ce2c0614c> in a_method(self, op, **args)
      6 
      7     def a_method(self, op, **args):
----> 8         self._parent = op(self._parent, **args)
      9 
     10 class B(A):

AttributeError: 'builtin_function_or_method' object has no attribute '_parent'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70422977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档