我正在嘗試將 pandas Dataframe 轉換為 scipy 稀疏矩陣,作為有效使用許多功能的方法。但是,我沒有找到一種有效的方法來訪問數據幀中的值,因此在進行轉換時我總是會耗盡內存。我嘗試了下面的兩種解決方案,但它們不起作用。我研究了很多,但沒有發現更好的東西。如果有人有建議,我很樂意測試它。sparse_array = sparse.csc_matrix(df.values)
sparse_array = sparse.csc_matrix(df.to_numpy())
1 回答

SMILET
TA貢獻1796條經驗 獲得超4個贊
如果你的數據幀非常稀疏,你可以按列轉換它然后堆疊:
from scipy import sparse
sparse_array = sparse.hstack([sparse.csc_matrix(df[i].values.reshape(-1, 1)) for i in df.columns])
但最好的辦法可能是將其轉換為稀疏數據框:
for i in df.columns:
df[i] = df[i].astype(pd.SparseDtype(df[i].dtype))
sparse_array = sparse.csc_matrix(df.sparse.to_coo())
(請注意,如果您的數據類型在整個數據框中不均勻,則可能會出現問題)。
添加回答
舉報
0/150
提交
取消