Я пытаюсь загрузить фрейм данных в 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
Пожалуйста, опубликуйте код и ошибку в виде текста, а не скриншота.
Пожалуйста, прочитайте руководство Как мне задать хороший вопрос? , особенно раздел «Помогите другим воспроизвести проблему», где жирным шрифтом выделено то, на что указали я и Toyota. И отредактируйте свой пост соответствующим образом. Попробуйте несколько примеров из документации Pandas и посмотрите, хорошо ли они отображаются в вашем блокноте. ( Вот некоторый самодостаточный код. Эти примеры показывают, как вы увидите его в консоли. Он должен отображаться для вас как HTML в Jupyter.) Возможно, что-то не так с этим .csv файлом.
<продолжение>Вернемся к тому, чего ожидать от df только в ячейке или display(df) внутри Jupyter... См. верхнюю часть здесь, чтобы лучше понять, что вы должны увидеть, если df только в ячейке. Вам не понадобится стиль, чтобы получить простые изображения, как они показаны в верхней части этой страницы, но я не могу найти в документации страницу, на которой прямо сейчас показано простое отображение фрейма данных, поэтому то, на что я ссылаюсь, должно дать вам смутное представление. .
Понятно, перередактирую код. Что касается маршрута display(df), я попробовал, но отображается тот же вызов трассировки.
Можете ли вы предоставить образец файла csv? Если проблема связана с df, просто отображающим загруженный кадр, вы можете протестировать один из сводных дисплеев, например df.info() или df.dtypes.
Конечно, добавлю выше
Я решил перезагрузить компьютер, и теперь он работает нормально. Даже дисплей изменился. Может кто-нибудь объяснить, в чем могла быть проблема? Мне никогда не приходилось перезагружать компьютер с новым расширением, они обычно запускаются напрямую.
Если ситуация более сложная, распространение изменений часто может потребовать перезапуска или обновления. Поскольку VSCode не является браузером, вероятно, нет легкодоступного обновления? Некоторые из них необходимо перезагрузить. Это полезно узнать сейчас, поскольку некоторые сложные расширения, которые вы добавите в Jupyter, могут потребовать того же самого.






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