Pandas导出to_excel错误:'DataFrame'对象没有属性'data'

问题描述 投票:0回答:1

我使用以下代码尝试从Tf-Idf矢量化器生成数据帧。矢量化器的fit_transform的输出是一个稀疏矩阵,因此我使用toarray()转换为数组,然后使用pandas.DataFrame转换为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和格式化。

经过一番调查后,我发现其中一个列名称是“渲染”,这就产生了问题。我该如何解决?以下代码引发相同的错误。 df = pd.DataFrame([1,2,3,4,5],columns = [“render”])后跟df.to_excel(“temp.xlsx”)

有人可以解释原因吗?

python pandas scikit-learn tfidfvectorizer
1个回答
0
投票

通过将列名称作为pandas.to_excel()的头参数传递而不是将其作为列名称包含在数据框中来解决此问题。仍然不确定如何在根部解决这个问题并使其将“渲染”视为正确的列标题。

df2 = pd.DataFrame(X.toarray())
df2.to_excel("temp2.xlsx", headers = word_list)
© www.soinside.com 2019 - 2024. All rights reserved.