#python #pandas #non-printing-characters
Вопрос:
Может ли кто-нибудь сказать мне, какой непечатаемый символ у меня в коде, из-за которого python не распознает имена столбцов в моем фрейме данных? :
import pandas as pd data_olymp = pd.read_csv("Olympics_data.csv", sep=";")
Вот обратная связь ошибки, когда я пытаюсь сгруппироваться по имени команды :
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) lt;ipython-input-103-ae95f10f5210gt; in lt;modulegt; 30 # print(type(réponse1)) 31 # print(len(winter_games_bronze_won)) ---gt; 32 print(data_olymp.loc[" winter_games_bronze_won"] == 9) ~anaconda3libsite-packagespandascoreindexing.py in __getitem__(self, key) 893 894 maybe_callable = com.apply_if_callable(key, self.obj) --gt; 895 return self._getitem_axis(maybe_callable, axis=axis) 896 897 def _is_scalar_access(self, key: Tuple): ~anaconda3libsite-packagespandascoreindexing.py in _getitem_axis(self, key, axis) 1122 # fall thru to straight lookup 1123 self._validate_key(key, axis) -gt; 1124 return self._get_label(key, axis=axis) 1125 1126 def _get_slice_axis(self, slice_obj: slice, axis: int): ~anaconda3libsite-packagespandascoreindexing.py in _get_label(self, label, axis) 1071 def _get_label(self, label, axis: int): 1072 # GH#5667 this will fail if the label is not present in the axis. -gt; 1073 return self.obj.xs(label, axis=axis) 1074 1075 def _handle_lowerdim_multi_index_axis0(self, tup: Tuple): ~anaconda3libsite-packagespandascoregeneric.py in xs(self, key, axis, level, drop_level) 3737 raise TypeError(f"Expected label or tuple of labels, got {key}") from e 3738 else: -gt; 3739 loc = index.get_loc(key) 3740 3741 if isinstance(loc, np.ndarray): ~anaconda3libsite-packagespandascoreindexesrange.py in get_loc(self, key, method, tolerance) 352 except ValueError as err: 353 raise KeyError(key) from err --gt; 354 raise KeyError(key) 355 return super().get_loc(key, method=method, tolerance=tolerance) 356 KeyError: ' winter_games_bronze_won'
Файл выглядит так :
team_name; summer_games_played; summer_games_gold_won; summer_games_silver_won; summer_games_bronze_won; summer_games_medals_won; winter_games_played; winter_games_gold_won; winter_games_silver_won; winter_games_bronze_won; winter_games_medals_won; total_games_played Canada (CAN);13;0;0;2;2;0;0;0;0;0;13 United States (USA);12;5;2;8;15;3;0;0;0;0;15 Russia (RUS);23;18;24;28;70;18;0;0;0;0;41
Комментарии:
1. На самом деле я думаю, что проблема в том, что каждый элемент даты разделен»;», но в конце каждой строки нет точки с запятой. Не поэтому ли python не распознает имена моих столбцов ?
2. В вашем коде нет непечатаемых символов. В вашем CSV-файле есть непечатаемые символы. Поскольку вы не показали нам ни трассировку ошибок, ни первые несколько строк файла, здесь никто ничего не может для вас сделать.
3. @Lost Student Если вы решили проблему, подумайте о том, чтобы принять ответ, который вам помог, и/или проголосовать за него.
Ответ №1:
Ключевые ошибки возникают при попытке доступа к ключу, которого нет в словаре. Во время работы с Пандами это примерно одно и то же. .loc
пытается найти ключевое значение, которое не найдено во фрейме данных.
Глядя на ваш код и ошибку отслеживания, я предполагаю, что, поскольку вы пытаетесь посмотреть вверх winter_games_bronze_won
(с пробелами в начале), вы получаете ошибку. Попробуйте удалить пробелы раньше winter_games_bronze_won
и посмотрите, что произойдет.