为列对创建稀疏指标矩阵

问题描述

我有一个两列的pandas数据框。我想为这两列(scipy.sparse.csr_matrix或cipy.sparse.csc_matrix)中的对创建一个稀疏指标矩阵。

数据很大,因此无法使用熊猫函数来加宽形状。我想从下面去:

发件人:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.array(([1,2],[2,[3,6],5])),columns = ['A','B'])
df

    A   B
0   1   2
1   2   2
2   3   6
3   3   5

收件人:

df['ones'] = 1
piVoted = pd.pivot_table(df,index = ['A'],columns = ['B'],values = ['ones'])
piVoted.columns = piVoted.columns.droplevel()
piVoted

B   2   5   6
A           
1   1.0 NaN NaN
2   1.0 NaN NaN
3   NaN 1.0 1.0

这很接近:numpy/scipy build adjacency matrix from weighted edgelist,但我想知道如何使用未加权的图形(即两列而不是三列)来完成此操作

我一直在使用numpy数组进行谷歌搜索,但是现在正式花费了太长时间。任何帮助表示赞赏。

解决方法

您的意思是:

csc = sparse.csc_matrix((np.ones_like(df['A']),(df['A'],df['B'])))

csc.toarray()

输出:

array([[0,0],[0,1,1]],dtype=int64)