我用过了
sklearn.preprocessing.OneHotEncoder
转换输出的一些数据 scipy.sparse.csr.csr_matrix
如何将其与其他列合并回原始数据框?
我试着用 pd.concat
但我明白了
TypeError: cannot concatenate a non-NDFrame object
谢谢
我用过了
sklearn.preprocessing.OneHotEncoder
转换输出的一些数据 scipy.sparse.csr.csr_matrix
如何将其与其他列合并回原始数据框?
我试着用 pd.concat
但我明白了
TypeError: cannot concatenate a non-NDFrame object
谢谢
如果A是 csr_matrix
, 您可以使用 .toarray()
(还有 .todense()
产生一个 numpy
matrix
,这也适用于 DataFrame
构造函数):
df = pd.DataFrame(A.toarray())
然后你可以使用它 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
在0.20版本中, pandas
介绍 稀疏数据结构, 包括 SparseDataFrame
。
或者,您可以将稀疏矩阵传递给 sklearn
转换回时避免内存不足 pandas
。只需传递一个,就可以将其他数据转换为稀疏格式 numpy
array
到了 scipy.sparse.csr_matrix
构造函数和使用 scipy.sparse.hstack
结合(见 文档)。
如果A是 csr_matrix
, 您可以使用 .toarray()
(还有 .todense()
产生一个 numpy
matrix
,这也适用于 DataFrame
构造函数):
df = pd.DataFrame(A.toarray())
然后你可以使用它 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
在0.20版本中, pandas
介绍 稀疏数据结构, 包括 SparseDataFrame
。
或者,您可以将稀疏矩阵传递给 sklearn
转换回时避免内存不足 pandas
。只需传递一个,就可以将其他数据转换为稀疏格式 numpy
array
到了 scipy.sparse.csr_matrix
构造函数和使用 scipy.sparse.hstack
结合(见 文档)。
您还可以通过设置参数来避免首先返回稀疏矩阵 sparse
至 False
在创建编码器时。
的文件 OneHotEncoder 状态:
sparse:boolean,default = True
如果设置为True将返回稀疏矩阵,否则将返回一个数组。
然后,您可以再次调用DataFrame构造函数将numpy数组转换为DataFrame。