Подтвердить что ты не робот

Почему мой Pandas DataFrame не отображает новый порядок, используя `sort_values`?

Новое в Pandas, возможно, мне не хватает большой идеи? У меня есть Pandas DataFrame транзакций регистров с формой вроде (500,4):

Time              datetime64[ns]
Net Total                float64
Tax                      float64
Total Due                float64

Я работаю над своим кодом в ноутбуке Python3 Jupyter. Я не могу пройти сортировку любого столбца. Работая с различными примерами кода для сортировки, я не вижу выходной порядок, когда я проверяю df. Итак, я уменьшил проблему, пытаясь заказать только один столбец:

df.sort_values(by='Time')
# OR
df.sort_values(['Total Due'])
# OR
df.sort_values(['Time'], ascending=True)

Независимо от того, какое название столбца или какой логический аргумент я использую, отображаемые результаты никогда не меняют порядок.

Думая, что это может быть Jupyter, я просмотрел результаты с помощью print(df), df.head() и HTML(df.to_html()) (последний пример для ноутбуков Jupyter). Я также перезапустил весь блокнот от импорта CSV до этого кода. И я тоже новичок в Python3 (от версии 2.7), поэтому иногда завязываюсь, но я не вижу, насколько это актуально в этом случае.

Другая публикация имеет аналогичную проблему, Python Pandas sort_values ​​dataframe не работает. В этом случае упорядочение выполнялось по типу столбца string. Но, как вы можете видеть, все столбцы здесь однозначно сортируются.

Почему мой Pandas DataFrame не отображает новый порядок с помощью sort_values?

4b9b3361

Ответ 1

df.sort_values(['Total Due']) возвращает отсортированный DF, но он не обновляет DF на месте.

Так что сделайте это явно:

df = df.sort_values(['Total Due'])

или

df.sort_values(['Total Due'], inplace=True)

Ответ 2

Моя проблема, к вашему сведению, заключалась в том, что я не возвращал полученный фрейм данных, поэтому PyCharm не удосужился обновить указанный фрейм данных. Присвоение имени фрейму данных после ключевого слова return устранило проблему.

Редактировать: У меня был return в конце моего метода вместо return df, который должен был заметить отладчик, потому что df не обновлялся, несмотря на мою явную сортировку на месте.