Сортированный пандас dataframe возвращает разные значения в зависимости от форматирования - PullRequest
0 голосов
/ 19 ноября 2018

Когда я сортирую этот фрейм данных в порядке убывания по «Итоговой стоимости покупки» без его форматирования, он правильно возвращает пять верхних строк:

totalVal = topItems["Price"].sum()
topFiveItems = pd.DataFrame({
    "Item Name": itemNames,
    "Purchase Count": purchaseCount,
    "Item Price": itemPrices.map("${:.2f}".format),
    "Total Purchase Value": totalVal
})
topFiveItems.sort_values(ascending = False, by = "Total Purchase Value").head()

Код без форматирования и результата

Но когда я применяю форматирование к «Итоговой стоимости покупки», сортировка по какой-то причине меняется:

totalVal = topItems["Price"].sum()
topFiveItems = pd.DataFrame({
    "Item Name": itemNames,
    "Purchase Count": purchaseCount,
    "Item Price": itemPrices.map("${:.2f}".format),
    "Total Purchase Value": totalVal.map("${:.2f}".format)
})
topFiveItems.sort_values(ascending = False, by = "Total Purchase Value").head()

Код с форматированием и результатом

Может кто-нибудь помочь мне отладить это?

Заранее благодарим за всю вашу помощь

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

chet-the-wizard , вероятно, прав, проверьте ваши типы данных до и после

topFive.dtypes 

скажет вам, что типы данных

0 голосов
/ 19 ноября 2018

Когда вы меняете формат на «$», вы меняете тип данных на строку, так что вы больше не сортируете по убыванию, вы сортируете по убыванию в алфавитном порядке, поэтому появляется «9»до '1'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...