排序后的panda数据帧根据格式返回不同的值



当我按照"总采购价值"的降序对数据帧进行排序而不格式化时,它会正确返回前五行:

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()

带格式的代码&结果

有人能带我调试一下吗?

提前感谢提供的所有帮助

当您更改格式以包含"$"时,您将数据类型更改为字符串,因此不再按数字降序排序,而是按字母降序排序,因此"9"位于"1"之前。

chet向导可能是正确的,在之前和之后验证您的数据类型

topFive.dtypes 

会告诉你的数据类型是什么

最新更新