Объект «Индекс» не имеет атрибута «_format_flat»

Я пытаюсь загрузить фрейм данных в VSCode только с помощью расширения блокнота, но когда я пытаюсь отобразить свой фрейм данных, я получаю эту ошибку: AttributeError: 'Index' object has no attribute '_format_flat'.

Вот мой код:

import numpy as np
import pandas as pd
df = pd.read_csv("data/European_Soccer_Data.csv")
df

Вот ошибка (запущена в VSCode с использованием расширения для ноутбука)

AttributeError                   Traceback (most recent call last)
File ...\anaconda3\Lib\sitepackages\IPython\core\formatters.py:344, in BaseFormatter.__call__(self, obj)
    342     method = get_real_method(obj, self.print_method)
    343     if method is not None:
--> 344         return method()
    345     return None
    346 else:

File ...\anaconda3\Lib\site-packages\pandas\core\frame.py:1136, in _repr_html_(self)
   1134 # more generally, whatever we allow in NDArrayBackedExtensionBlock
   1135 arr = cast("np.ndarray | DatetimeArray | TimedeltaArray | PeriodArray", arr)
-> 1136 return arr.T

File ...\anaconda3\Lib\site-packages\pandas\io\formats\format.py:1108, in to_html(self, buf, encoding, classes, notebook, border, table_id, render_links)
   1079 def format_array(
   1080     values: ArrayLike,
   1081     formatter: Callable | None,
   (...)
   1090     fallback_formatter: Callable | None = None,
   1091 ) -> list[str]:
   1092     """
   1093     Format an array for printing.
   1094 
   1095     Parameters
...
    609 def _get_columns_formatted_values(self) -> list[str]:
    610     # only reached with non-Multi Index
--> 611     return self.columns._format_flat(include_name=False)

AttributeError: 'Index' object has no attribute '_format_flat'

Я считаю, что это ошибка при настройке моих файлов, потому что я еще не сделал ничего серьезного. Я пошел и посмотрел на функцию, вызывающую эту проблему, и был перенаправлен на файл с именем html.py. это бежало:

class NotebookFormatter(HTMLFormatter):
    """
    Internal class for formatting output data in html for display in Jupyter
    Notebooks. This class is intended for functionality specific to
    DataFrame._repr_html_() and DataFrame.to_html(notebook=True)
    """
    enter code here

def _get_columns_formatted_values(self) -> list[str]:
        # only reached with non-Multi Index
        return self.columns._format_flat(include_name=False)

Как вы можете видеть выше, функция возвращает self.columns._format_flat(...)

Насколько я понял из этой проблемы, эта функция вызывает свойство, которое не определено в объекте Index, который в настоящее время находится в моей виртуальной среде. Это правильное предположение или я что-то упускаю? Если возможно, может ли кто-нибудь подробнее объяснить эту ошибку и, в конечном итоге, как мне предотвратить возникновение этой ошибки?

Вот образец CSV-файла:

Round,Date,Time,Team,Team_Score,Opponent_Score,Opponent,Home_Score_AET,Away_Score_AET,Home_Penalties,Away_Penalties,Team_Points,Opponent_Points,season,Location,Country,Competition
ROUND 1,31/08/2002,22:30,RACING SANTANDER,0.0,1.0,VALLADOLID,,,,,0.0,3.0,2002,Home,spain,primera-division
ROUND 1,01/09/2002,21:00,RAYO VALLECANO,2.0,2.0,ALAVES,,,,,1.0,1.0,2002,Home,spain,primera-division
ROUND 1,01/09/2002,21:00,REAL SOCIEDAD,4.0,2.0,ATHLETIC BILBAO,,,,,3.0,0.0,2002,Home,spain,primera-division
ROUND 1,01/09/2002,22:00,MALLORCA,0.0,2.0,VALENCIA,,,,,0.0,3.0,2002,Home,spain,primera-division
ROUND 1,01/09/2002,22:30,VILLARREAL,2.0,2.0,OSASUNA,,,,,1.0,1.0,2002,Home,spain,primera-division
ROUND 1,01/09/2002,22:30,RECREATIVO HUELVA,2.0,3.0,MALAGA,,,,,0.0,3.0,2002,Home,spain,primera-division

Эта ячейка, которая является df, должна отображать фрейм данных, поскольку Jupyter попытается отобразить то, что возвращается последним выражением, используя свои богатые репрезентативные функции. Пробовали display(df)? Ваша обратная связь неполная, поэтому мы не можем многое сказать по фрагменту, которым вы поделились. Например, он не соответствует скриншоту, которым вы поделились. Но, возможно, так оно и есть. Не могу сказать, потому что это всего лишь часть. Кроме того, очень не одобряется и запрещено публиковать текстовый код в виде изображений или, по крайней мере, только изображений. Его нельзя ни искать, ни индексировать, поэтому он практически бесполезен для системы StackOverflow.

Wayne 25.05.2024 22:31

Пожалуйста, опубликуйте код и ошибку в виде текста, а не скриншота.

toyota Supra 25.05.2024 22:33

Пожалуйста, прочитайте руководство Как мне задать хороший вопрос? , особенно раздел «Помогите другим воспроизвести проблему», где жирным шрифтом выделено то, на что указали я и Toyota. И отредактируйте свой пост соответствующим образом. Попробуйте несколько примеров из документации Pandas и посмотрите, хорошо ли они отображаются в вашем блокноте. ( Вот некоторый самодостаточный код. Эти примеры показывают, как вы увидите его в консоли. Он должен отображаться для вас как HTML в Jupyter.) Возможно, что-то не так с этим .csv файлом.

Wayne 25.05.2024 22:36

<продолжение>Вернемся к тому, чего ожидать от df только в ячейке или display(df) внутри Jupyter... См. верхнюю часть здесь, чтобы лучше понять, что вы должны увидеть, если df только в ячейке. Вам не понадобится стиль, чтобы получить простые изображения, как они показаны в верхней части этой страницы, но я не могу найти в документации страницу, на которой прямо сейчас показано простое отображение фрейма данных, поэтому то, на что я ссылаюсь, должно дать вам смутное представление. .

Wayne 25.05.2024 22:45

Понятно, перередактирую код. Что касается маршрута display(df), я попробовал, но отображается тот же вызов трассировки.

B_JR 25.05.2024 22:48

Можете ли вы предоставить образец файла csv? Если проблема связана с df, просто отображающим загруженный кадр, вы можете протестировать один из сводных дисплеев, например df.info() или df.dtypes.

hpaulj 26.05.2024 00:13

Конечно, добавлю выше

B_JR 26.05.2024 00:16

Я решил перезагрузить компьютер, и теперь он работает нормально. Даже дисплей изменился. Может кто-нибудь объяснить, в чем могла быть проблема? Мне никогда не приходилось перезагружать компьютер с новым расширением, они обычно запускаются напрямую.

B_JR 26.05.2024 00:23

Если ситуация более сложная, распространение изменений часто может потребовать перезапуска или обновления. Поскольку VSCode не является браузером, вероятно, нет легкодоступного обновления? Некоторые из них необходимо перезагрузить. Это полезно узнать сейчас, поскольку некоторые сложные расширения, которые вы добавите в Jupyter, могут потребовать того же самого.

Wayne 26.05.2024 01:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
9
1 312
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта ошибка может возникнуть, если вы используете устаревшую версию панд, попробуйте обновить версию панд.

pip install --upgrade pandas

Другие вопросы по теме