【发布时间】:2019-08-14 16:08:32
【问题描述】:
我使用以下代码尝试从 Tf-Idf 矢量化器制作数据帧。矢量化器的 fit_transform 的输出是一个稀疏矩阵,因此我使用 toarray() 转换为数组,然后使用 pandas.DataFrame 转换为数据帧。我还使用 vectorizer.get_feature_names() 提取特征列表并将其用作数据框的列名。
vect = TfidfVectorizer()
X = vect.fit_transform(text_list)
word_list = vect.get_feature_names()
df1 = pd.DataFrame(X.toarray())
df1.to_excel("temp1.xlsx")
df2 = pd.DataFrame(X.toarray(), columns = word_list)
df2.to_excel("temp2.xlsx")
在 case-1 中,数据帧 df1 可以毫无问题地导出。但是缺少列名 - 标记为 0,1,2 ...
在 case-2 中,我尝试包含列名,但导出会引发错误。
AttributeError: 'DataFrame' 对象没有属性 'data'
有趣的是,此错误仅在某些情况下发生,而不是全部发生。对于不同的文本数据,不会出现这个问题。所以我认为它可能与 word_list 和格式化有关。
经过一番调查,我发现其中一个列名是“render”,这就是问题所在。我该如何解决它?以下代码会引发相同的错误。 df = pd.DataFrame([1,2,3,4,5], columns = ["render"]) 后跟 df.to_excel("temp.xlsx")
谁能解释一下原因?
【问题讨论】:
-
经过一番调查,我发现其中一个列名是“render”,这就是问题所在。我该如何解决它?以下代码会引发相同的错误。 df = pd.DataFrame([1,2,3,4,5], columns = ["render"]) 后跟 df.to_excel("temp.xlsx")
-
通过将列名作为 pandas.to_excel() 的标题参数而不是将其作为列名包含在数据框中来解决它。
-
关于您的第一条评论 - 此类附加信息应通过编辑和更新添加到帖子中;关于您的第二条评论 - 请善待并将其作为答案发布,以便将来对其他人有用
标签: python pandas scikit-learn tfidfvectorizer