【发布时间】:2018-05-24 04:43:30
【问题描述】:
在 R 中,我可以提取包含特定术语的行(文档),例如“toyota”,方法是将文档术语矩阵 (dtm) 与所需的列名相交,如下所示:
dtm <- DocumentTermMatrix(mycorpus, control = list(tokenize = TrigramTokenizer))
x.df<-as.matrix(dtm[1:ncorpus, intersect(colnames(dtm), "toyota"),drop=FALSE])
问题是我在 Python sklearn 包中找不到等效的方法。所以我绕道而行:
- 首先我获取 tfidf 框架中相关列(“toyota”)不为空的行的索引值;列名是特征名。
- 然后我根据已识别的行索引对主要的 pandas 数据帧进行切片。
- 现在我有一个数据框,其中每一行都包含“toyota”。
MVP在这里:
rows_to_keep=tfidf_df[tfidf_df.toyota.notnull()].index
data=my_df.loc[rows_to_keep,:]
print(data.shape)
这行得通。问题是如何将迭代器传递给该语句?
car_make=['toyota','ford','nissan','gmotor','honda','suzuki']
然后for zentity in car_make:
rows_to_keep=tfidf_df[tfidf_df.zentity.notnull()].index
不工作。
AttributeError: 'SparseDataFrame' 对象没有属性 'zentity'
我故意选择 zentity 以避免与 tfidf 中的任何列名等价。
是否有一种干净的方法来进行交集并仅提取列不为空 (NaN) 的行?任何帮助将不胜感激。
【问题讨论】:
标签: python-3.x scikit-learn tf-idf sklearn-pandas