【问题标题】:Pandas export to_excel error: 'DataFrame' object has no attribute 'data'Pandas 导出 to_excel 错误:“DataFrame”对象没有属性“data”
【发布时间】: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


【解决方案1】:

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

df2 = pd.DataFrame(X.toarray())
df2.to_excel("temp2.xlsx", headers = word_list)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多