问题描述
我有一个两列的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)