【发布时间】:2021-01-20 18:02:28
【问题描述】:
我有一个包含两列的 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/scipy build adjacency matrix from weighted edgelist 但我想知道如何使用未加权图(即两列而不是三列)来做到这一点
我一直在谷歌上搜索并使用 numpy 数组来达到目标,但现在正式花费了太长时间。任何帮助表示赞赏。
【问题讨论】:
-
你现在的方法有什么问题?
-
@Quang Hoang - 数据量很大。我需要更有效地创建邻接矩阵。然后我将对邻接矩阵进行一些点积运算,所以 igraph 没有帮助。所以结果需要是稀疏的,而且,我不能使用 pandas 到达那里,否则我会在尝试旋转时耗尽内存。
-
我认为我需要的是:stackoverflow.com/questions/29146892/… 但我想知道如何使用未加权图(即两列而不是三列)来做到这一点
标签: pandas numpy scipy sparse-matrix