import numpy as np
from scipy.sparse import csr_matrix
csr = csr_matrix(np.array(
[[0, 0, 4],
[1, 0, 0],
[2, 0, 0],]))
# Return a Coordinate (coo) representation of the csr matrix.
coo = csr.tocoo(copy=False)
# Access `row`, `col` and `data` properties of coo matrix.
df = pd.DataFrame({'index': coo.row, 'col': coo.col, 'data': coo.data})[['index', 'col', 'data']]
>>> df.head()
index col data
0 0 2 4
1 1 0 1
2 2 0 2
我尝试将scipy csr_matrix矩阵转换为 Dataframe ,其中列表示矩阵的索引、列和数据。
唯一的问题是,我在上面尝试的操作不能为值为0的列生成行。下面是我希望的输出:
>>> df.head()
index col data
0 0 0 0
1 0 1 0
2 0 2 4
3 1 0 1
4 1 1 0
5 1 2 0
6 2 0 2
7 2 1 0
8 2 2 0
您将看到上面的代码片段取自this answer in this thread。
我的要求/问题:有没有办法将矩阵转换为df,并且包含值为0的矩阵元素?
2条答案
按热度按时间5n0oy7gb1#
一种方法是创建一个
filling
DataFrame,并将其与已有的DataFrame组合(使用combine_first
):输出
9fkzdhlc2#
melt
Dataframe 从“宽”格式更改为“长”格式