如何从pandas中的countvectorized稀疏数据帧中删除几列

时间:2017-12-11 15:49:02

标签: python pandas scikit-learn nlp

我在countvectorized数据框中有大约2000个文本功能。我有800个文本特征列的列表,它们对预测模型具有实际的特征重要性贡献。我想只保留这800列并删除剩余的1200个列,因为它们对我的预测贡献不大。

我该怎么做?我有要在文本文件中维护的列的列表。

cv = CountVectorizer( max_features = 2000,analyzer='word') 
    cv_text = cv.fit_transform(data.pop('text'))
    for i, col in enumerate(cv.get_feature_names()):
        data[col] = pd.SparseSeries(cv_text[:, i].toarray().ravel(), fill_value=0)

1 个答案:

答案 0 :(得分:0)

应该很容易:

data = data.drop(list_of_cols_to_drop, axis=1)

data = data.drop(data.columns.difference(list_of_needed_cols), axis=1)

drop个对象有一个SparseDataFrame方法。

来自docstring:

In [139]: pd.SparseDataFrame.drop?
Signature: pd.SparseDataFrame.drop(self, labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='rai
se')
Docstring:
Return new object with labels in requested axis removed.