首页 > 解决方案 > 选择特定日期的最大数量

问题描述

这是桌子

在此处输入图像描述

对于每个(shopID, productID)组合,我想选择最大值Quantity,如果它们是多个,则随机选择一个,结果如下:

在此处输入图像描述

第一张表的代码

from datetime import date 
import pandas as pd
df=pd.DataFrame({"Date":[date(2019,10,1),date(2019,10,1),date(2019,10,1),date(2019,10,2),date(2019,10,2),date(2019,10,2),date(2019,10,3),date(2019,10,3),date(2019,10,3)],
                "ShopID":[1,1,1,1,1,1,2,2,2],
                "ProductID":[1,1,1,2,2,2,1,1,1],
                "Quantity":[3,3,2,4,5,6,4,5,6],
                "Desc":["a","b","c","d","e","f","g","h","i"]})

我如何想出第二张桌子?

标签: pythonpython-3.xpandas

解决方案


使用DataFrame.sort_values 基于 .Quantity然后使用groupby.firstwith ascending = Falseor来订购groupby.last

new_df=df.sort_values('Quantity').groupby(['Date','ShopID','ProductID']).last()
print(new_df)

Date       ShopID ProductID  Quantity Desc             
2019-10-01 1      1                 3    b
2019-10-02 1      2                 6    f
2019-10-03 2      1                 6    i

或者:

df.sort_values('Quantity',ascending=False).groupby(['Date','ShopID','ProductID']).first()

推荐阅读