Ошибка экспорта в Pandas to_excel: объект DataFrame не имеет атрибута data - PullRequest
0 голосов
/ 24 марта 2019

Я использую следующий код, чтобы попытаться создать фрейм данных из векторизатора 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")

В случае 1 фрейм данных df1 экспортируется без проблем.Однако имена столбцов отсутствуют - помечены 0,1,2 ...

В случае 2 я пытаюсь включить имена столбцов, но экспорт выдает ошибку.

AttributeError: у объекта «DataFrame» нет атрибута «data»

Как ни странно, эта ошибка возникает только в некоторых случаях, а не во всех.Для разных текстовых данных эта проблема не возникает.Поэтому я думаю, что это может что-то сделать word_list и, возможно, форматирование.

После небольшого исследования я обнаружил, что одно из имен столбцов было «render», и это создает проблему.Как мне обойти это?Следующий код выдает ту же ошибку.df = pd.DataFrame ([1,2,3,4,5], columns = ["render"]), за которым следует df.to_excel ("temp.xlsx")

Может кто-нибудь объяснить, почему?

1 Ответ

0 голосов
/ 25 марта 2019

Решено, передавая имена столбцов в качестве параметра заголовка для pandas.to_excel () вместо того, чтобы включать их в кадр данных в качестве имен столбцов.До сих пор не уверен, как преодолеть эту проблему в корне и заставить его рассматривать «рендер» как правильный заголовок столбца.

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