我想使用scipy库中的csr_matrix
将DataFrame转换为稀疏矩阵,但是首先我必须将其转换为SparseDataFrame。在以前的熊猫版本中,出于这种目的,我使用了pd.SparseDataFrame(df).to_coo()
,但由于pandas 1.0.0
,该方法已被弃用。有谁知道如何使用最新的Pandas API执行此类转换。我使用了此迁移guide,并尝试了各种组合,但仍无法获得所需的结果。
遵循指南,当我执行以下操作
csr_matrix(pd.DataFrame.sparse.from_spmatrix(df).to_coo())
我收到此错误
AttributeError: 'DataFrame' object has no attribute 'tocsc'
答案 0 :(得分:1)
IIUC并使用您共享的第三个链接,您可以像这样使用df
将pd.SparseDtype
数据转换为稀疏数据
df_sparsed = df.astype(pd.SparseDtype("float", np.nan)
您可以阅读有关pd.SparseDtype
here的更多信息,为数据选择正确的参数,然后在上述命令中使用它,如下所示:
csr_matrix(df_sparsed.sparse.to_coo()) # Note you need .sparse accessor to access .to_coo()
一个简单的班轮将是
csr_matrix(df.astype(pd.SparseDtype("float", np.nan)).sparse.to_coo())