Python 如何使用适当的排序编写查询

Python 如何使用适当的排序编写查询,python,pandas,Python,Pandas,我有一个问题,要向熊猫队提问。我有一个数据框:(商品名称、订单id、数量、商品价格1) 任务是获得最昂贵产品的销售量。 当我这样编写查询时: df.groupby('item_name')['item_price1','quantity'].agg(['max','count']) 它很好用。但是,当我尝试对查询结果进行排序以使用以下sort_值查找最昂贵的结果时: df.groupby('item_name')['item_price1','quantity'].agg(['max','c

我有一个问题,要向熊猫队提问。我有一个数据框:
(商品名称、订单id、数量、商品价格1)

任务是获得最昂贵产品的销售量。 当我这样编写查询时:

df.groupby('item_name')['item_price1','quantity'].agg(['max','count']) 
它很好用。但是,当我尝试对查询结果进行排序以使用以下sort_值查找最昂贵的结果时:

df.groupby('item_name')['item_price1','quantity'].agg(['max','count']).sort_values(by='max', ascending=False).head(10)
它以以下错误结束:

密钥错误“max”


正确的做法是什么?

移动我的评论以回答:

当您执行以下操作时:

agg = df.groupby('item_name')['item_price1','quantity'].agg(['max','count']) 
您最终构建了一个多级列索引,在本例中(
agg.columns
)是:

要使用该级别进行排序,需要使用特定级别,例如:

agg.sort_values(by=('item_price1', 'max'), ascending=False)
另一方面,您正在使用
.head(10)
来限制完全排序数据后的总输出,但如果您的样本量与总体相比较小,则最好使用
.nlargest
,例如:

agg.nlargest(10, ('item_price1', 'max'))

您是否尝试过:?您是否创建了一个新的
df
,其列名为
max
?你能确认一下吗?没有。在这种情况下,“max”是一个聚合函数,因为您有多个具有多个聚合操作的列,那么您将有一个多级列索引。。。您需要更具体地确定要按以下哪种“最大值”排序:
。排序值(按=('item\u price1','max'),升序=False)
agg.nlargest(10, ('item_price1', 'max'))