Pandas Dataframe сортирует столбец двойных значений от самого высокого до самого низкого ⇐ Python
-
Гость
Pandas Dataframe сортирует столбец двойных значений от самого высокого до самого низкого
Я работаю над веб-сбором статистики НБА и хочу иметь возможность сортировать ее по таким статистическим данным, как очки, передачи и блоки.
У меня есть фрейм данных Pandas, и он может правильно распечатывать игроков и статистику, включая сортировку по целым числам, например по возрасту, как показано ниже. Пример кадра данных, отсортированного по возрасту
Однако, когда я пытаюсь сортировать по очкам, сортировка выполняется неправильно от самых высоких значений к самым низким, а скорее от самого высокого начального числа, например, от 9,9 до 0, хотя явно есть игроки, набравшие более 10,0 очков за игру. Пример кадра данных, отсортированного по точкам
Являются ли числа, хранящиеся в кадре данных, строками, и в результате сравнение строк вызывает эту проблему?
Вот код, который я использую:
год = 2021 # URL-адрес страницы, которую мы будем парсить (см. изображение выше) url = "https://www.basketball-reference.com/le ... rmat(year) # это HTML-код данного URL-адреса HTML = urlopen(url) суп = BeautifulSoup(html, Features="html.parser") таблица = суп.find_all(class_="full_table") голова = суп.find(class_="thead") headers_raw = [head.text для элемента в заголовке][0] headers = headers_raw.replace("\n", ",").split(",")[2:-1] игроки = [] для меня в диапазоне (len(таблица)): игрок = [] для td в таблице.find_all("td"): player.append(td.text) player.append(игрок) статистика = pd.DataFrame(игроки, столбцы = заголовки) sorted_by_points = stats.sort_values('PTS', по возрастанию = False)
Я работаю над веб-сбором статистики НБА и хочу иметь возможность сортировать ее по таким статистическим данным, как очки, передачи и блоки.
У меня есть фрейм данных Pandas, и он может правильно распечатывать игроков и статистику, включая сортировку по целым числам, например по возрасту, как показано ниже. Пример кадра данных, отсортированного по возрасту
Однако, когда я пытаюсь сортировать по очкам, сортировка выполняется неправильно от самых высоких значений к самым низким, а скорее от самого высокого начального числа, например, от 9,9 до 0, хотя явно есть игроки, набравшие более 10,0 очков за игру. Пример кадра данных, отсортированного по точкам
Являются ли числа, хранящиеся в кадре данных, строками, и в результате сравнение строк вызывает эту проблему?
Вот код, который я использую:
год = 2021 # URL-адрес страницы, которую мы будем парсить (см. изображение выше) url = "https://www.basketball-reference.com/le ... rmat(year) # это HTML-код данного URL-адреса HTML = urlopen(url) суп = BeautifulSoup(html, Features="html.parser") таблица = суп.find_all(class_="full_table") голова = суп.find(class_="thead") headers_raw = [head.text для элемента в заголовке][0] headers = headers_raw.replace("\n", ",").split(",")[2:-1] игроки = [] для меня в диапазоне (len(таблица)): игрок = [] для td в таблице.find_all("td"): player.append(td.text) player.append(игрок) статистика = pd.DataFrame(игроки, столбцы = заголовки) sorted_by_points = stats.sort_values('PTS', по возрастанию = False)
Мобильная версия