【发布时间】:2017-01-19 11:00:01
【问题描述】:
我正在开发基于 pandas DataFrame 对象的工具。我想将 scipy 稀疏矩阵保留为 DataFrame 的列,而不是将其逐行转换为 dtype('O') 的列表/numpy 数组。
下面的 sn-p 不起作用,因为 pandas 将矩阵视为标量,并建议添加索引。在矩阵中的行索引上提供 pd.RangeIndex 时,矩阵会针对数据帧中的每一行重复(因为 pandas 认为它是一个标量)。
ma = scipy.sparse.rand(10, 100, 0.1, 'csr', dtype=np.float64)
df = pd.DataFrame(dict(X=ma))
这确实有效:
df = pd.DataFrame(dict(X=list(ma)))
但是,这会将矩阵逐行分割为 CSR 矩阵,每行 1 行。每次我想处理原始矩阵时,我都需要 vstack。
有什么建议吗?我尝试将 CSR 矩阵包装到 pd.Series 对象中,假装它具有 dtype('O'),但我遇到了很多关于底层数据是 numpy 数组等的假设。
【问题讨论】:
标签: python pandas dataframe scipy sparse-matrix