【问题标题】:Way to parse Python pandas DataFrame to Matrix Market (MM) Format?将 Python pandas DataFrame 解析为矩阵市场(MM)格式的方法?
【发布时间】:2014-08-19 01:11:08
【问题描述】:

是否有一种内置方法可以将 Python pandas.DataFrame 对象(内部存储为 2x2 numpy.ndarray)写入Matrix Market (MM) format?我有稀疏矩阵和密集矩阵的用例。

当我在这里说“内置”时,我的意思是内置在 pandas 包中。如果不是 pandas,那么有什么东西可以采用 DataFrame 或 2x2 numpy.ndarray 并执行此操作吗?

【问题讨论】:

    标签: parsing python-2.7 numpy matrix pandas


    【解决方案1】:

    我很确定pandas 没有内置任何内容,但如果您安装了完整的堆栈,您可以使用scipy

    >>> import scipy.io, scipy.sparse
    >>> df = pd.DataFrame({"A": [1,2], "B": [3,0]})
    >>> scipy.io.mmwrite("mmout", df)
    >>> !cat mmout.mtx
    %%MatrixMarket matrix array integer general
    %
    2 2
    1
    2
    3
    0
    

    它也适用于稀疏情况:

    >>> scipy.io.mmwrite("mmout", scipy.sparse.csr_matrix(df))
    >>> !cat mmout.mtx
    %%MatrixMarket matrix coordinate integer general
    %
    2 2 3
    1 1 1
    1 2 3
    2 1 2
    

    虽然你必须构建一个副本。

    【讨论】:

    • 为了正确编写稀疏矩阵,您需要首先删除NaN 值。这可以使用df.fillna(0) 来完成。然后,在将 DataFrame 转换为稀疏矩阵后:sparse_matrix = scipy.sparse.csr_matrix(df.fillna(0)) 您可以使用 sparse_matrix.eliminate_zeros() 删除所有 0 值,这是一个就地操作。
    猜你喜欢
    • 2017-10-26
    • 2013-09-30
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多