簡體   English   中英

熊貓數據框稀疏表示

[英]Pandas dataframe to sparse representation

我有一個密集的熊貓數據框。 我想從中得到一個稀疏數據幀,其中原始數據幀的每個值將是結果稀疏數據幀中1的列。

例:

原始df:

    a b
0   5 3
1   2 6

稀疏df:

(0,3): 1
(0,5): 1
(1,2): 1
(1,6): 1

我不在乎是否發生碰撞或碰撞次數為1

然后,我將此df傳遞給sklearn.linear_model.LogisticRegression擬合函數(我不確定此處將接受哪種稀疏矩陣)

什么是合適的方法?

我可以手動創建它(在行中重復),但是數據幀很大,因此我試圖找到一種有效的方法。

謝謝

基於@Dark注釋:

mlb = sklearn.preprocessing.MultiLabelBinarizer(sparse_output = True)
result = mlb.fit_transform(np.array[df])

fit_transform需要可迭代的迭代: 此處解釋

比@Dark提出的解決方案快得多的解決方案是使用csr_matrix構造函數,但是在有冗余的情況下可以總結出這些,對於我的情況是可以的:

nrow = len(df.index)
ncol = len(df.columns)
indices = df.values.flatten()
data = np.full_like(indices, 1)
nelement = len(indices)
indptr = range(0, nelement+ncol, ncol)
result = csr_matrix((data, indices, indptr))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM