首页 > 解决方案 > 编码后连接数据帧

问题描述

我正在尝试组合一个数组和一个矩阵。具体来说,数组包含数字数据(年),而矩阵包含编码数据。

特点如下:

X_a=df.Year
Name: Year, Length: 5854, dtype: float64

vectorizer = CountVectorizer()
X_t = vectorizer.fit_transform(df['Text'].replace(np.NaN, ""))
Out: <5854x8206 sparse matrix of type '<class 'numpy.int64'>'
        with 25871 stored elements in Compressed Sparse Row format>

我尝试如下:

X= pd.concat([X_a, X_t], axis=1)

但我得到了错误:

TypeError: cannot concatenate object of type '<class 'scipy.sparse.csr.csr_matrix'>'; only Series and DataFrame objs are valid

您能否告诉我是否可以连接这两个数据集以及如何连接?

数据:

Year     Text
1999     _italic_
2000    add language identifier to highlight code
2004    escape put returns between paragraphs

...

标签: pythonpandasencoding

解决方案


错误消息基本上是在告诉您问题所在。您只能连接 pandas 系列和数据框。SKLearn 不返回那些,而是返回 numpy 数组。此外,在这种情况下,它会创建一个稀疏数组。

您可以在这里做几件事,具体取决于易用性与内存性能。可能最简单的方法是使用

X_t = pd.DataFrame(vectorizer.fit_transform(df['Text'].replace(np.NaN, "")).todense(), index=df.index)

但请注意,它会创建一个密集矩阵,然后创建密集数据帧。


推荐阅读