为了账号安全,请及时绑定邮箱和手机立即绑定

有效地将 pandas 数据帧转换为 scipy 稀疏矩阵

有效地将 pandas 数据帧转换为 scipy 稀疏矩阵

慕哥6287543 2023-12-05 14:56:40
我正在尝试将 pandas Dataframe 转换为 scipy 稀疏矩阵,作为有效使用许多功能的方法。但是,我没有找到一种有效的方法来访问数据帧中的值,因此在进行转换时我总是会耗尽内存。我尝试了下面的两种解决方案,但它们不起作用。我研究了很多,但没有发现更好的东西。如果有人有建议,我很乐意测试它。sparse_array = sparse.csc_matrix(df.values) sparse_array = sparse.csc_matrix(df.to_numpy())
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

如果你的数据帧非常稀疏,你可以按列转换它然后堆叠:


from scipy import sparse


sparse_array = sparse.hstack([sparse.csc_matrix(df[i].values.reshape(-1, 1)) for i in df.columns])

但最好的办法可能是将其转换为稀疏数据框:


for i in df.columns:

    df[i] = df[i].astype(pd.SparseDtype(df[i].dtype))


sparse_array = sparse.csc_matrix(df.sparse.to_coo())

(请注意,如果您的数据类型在整个数据框中不均匀,则可能会出现问题)。


查看完整回答
反对 回复 2023-12-05
  • 1 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信