如何使用 scipy 的 csr_matrix 将 pandas 数据帧转换为稀疏矩阵?
How to convert pandas dataframe to a sparse matrix using scipy's csr_matrix?
我想使用 scipy 库中的 csr_matrix
将 DataFrame 转换为稀疏矩阵,但首先我必须将其转换为 SparseDataFrame。在以前的 pandas 版本中,我使用 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'
谁能帮我解决这个问题?我也确实找到了其他帖子,但对我的情况没有帮助 link link
IIUC 并使用您共享的第三个 link,您可以使用 pd.SparseDtype
将 df
数据转换为稀疏数据,像这样
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())
我想使用 scipy 库中的 csr_matrix
将 DataFrame 转换为稀疏矩阵,但首先我必须将其转换为 SparseDataFrame。在以前的 pandas 版本中,我使用 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'
谁能帮我解决这个问题?我也确实找到了其他帖子,但对我的情况没有帮助 link
IIUC 并使用您共享的第三个 link,您可以使用 pd.SparseDtype
将 df
数据转换为稀疏数据,像这样
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())