为列对创建稀疏指标矩阵

Create sparse indicator matrix for column pairs

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

数据较大,无法使用pandas函数加宽形状。我想去往的地方如下:

发件人:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.array(([1,2], [2,2], [3,6], [3, 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 数组以到达那里,但现在正式花了太长时间。任何帮助表示赞赏。

你的意思是:

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

csc.toarray()

输出:

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