【发布时间】:2016-05-17 06:04:56
【问题描述】:
我有一个可以作为 Pandas 数据框读取的 SQL 表,它具有以下结构:
user_id value
1 100
1 200
2 100
4 200
这是一个矩阵的表示,它的所有值都是 1 或 0。这个矩阵的密集表示如下所示:
100 200
1 1 1
2 1 0
4 0 1
通常,要进行此转换,您可以使用数据透视表,但在我的情况下,第一个表中有数千万或数亿行,一个大而密集的矩阵充满了零,拖拽起来很昂贵。您可以将其转换为稀疏的,但要做到这一点需要大量资源。
现在我正在研究一种解决方案,将行号分配给每个 user_id,排序,然后将“值”列拆分为 SparseSeries,然后重新组合为 SparseDataFrame。有没有更好的办法?
【问题讨论】:
-
我在 SO 上没有看到太多关于 SparseSeries 的讨论。我已经回答了几个关于在它和
scipysparse矩阵之间来回传输的问题。我的印象是 Pandassparse结构仍在开发中。 -
我找到了一些,就像你在这里的答案stackoverflow.com/questions/34181494/… 问题是它似乎没有扩展。现在我正在尝试转换一个 40,000 x 15,000 的 csc 矩阵,它已经运行了 30 多分钟。
标签: python pandas sparse-matrix