为列对创建稀疏指标矩阵
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)
我有一个包含两列的 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)