Wenn A csr_matrix
ist, können Sie .toarray()
(es gibt verwenden auch .todense()
, die eine numpy
matrix
produziert, der auch arbeitet für die DataFrame
ist Konstruktor):
df = pd.DataFrame(A.toarray())
Sie c Dann benutze das mit pd.concat()
.
A = csr_matrix([[1, 0, 2], [0, 3, 0]])
(0, 0) 1
(0, 2) 2
(1, 1) 3
<class 'scipy.sparse.csr.csr_matrix'>
pd.DataFrame(A.todense())
0 1 2
0 1 0 2
1 0 3 0
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 3 columns):
0 2 non-null int64
1 2 non-null int64
2 2 non-null int64
In der Version 0.20, pandas
sparse data structures eingeführt, die SparseDataFrame
einschließlich.
Alternativ können Sie dünn besetzte Matrizen an sklearn
übergeben, um zu vermeiden, dass bei der Konvertierung zurück in pandas
der Arbeitsspeicher erschöpft ist. Konvertieren Sie einfach Ihre anderen Daten in ein spärliches Format, indem Sie einen numpy
array
an den scipy.sparse.csr_matrix
Konstruktor übergeben und scipy.sparse.hstack
zum Kombinieren verwenden (siehe docs).
Was kann ich tun, wenn mein A.toarray() zu einem MemoryError führt? Gibt es eine Möglichkeit, den Dataframe zu erstellen, ohne ihn in ein ndarray umzuwandeln? – user77005
Vielleicht möchten Sie sich Pandas anschauen [spärliche Datenstrukturen] (https://pandas.pydata.org/pandas-docs/stable/sparse.html) – Stefan