如何分组并查找新的或消失的项目

问题描述 投票:0回答:1

我正在尝试在销售数据库中评估广告数量是否发生变化。 我正在使用的示例数据框是这样的:

df = pd.DataFrame({"offer-id": [1,1,2,2,3,4,5], "date": ["2024-02-10","2024-02-11","2024-02-10","2024-02-11","2024-02-11","2024-02-11","2024-02-10"], "price": [30,10,30,30,20,25,20]})

看起来像下面这样:

我现在正在尝试获取已售出或新添加的物品数量(我不在乎是哪一件,因为一旦我拥有了一件,另一件就应该很容易计算失败)。

例如在完美的情况下,下一段代码告诉我,2 月 10 日,报价已上线(ID 1、2 和 5),并且已售出(ID 5) 或者,它告诉我 2 月 11 日有 4 个报价上线,其中 2 个是新的(据此,因为我知道前 5 个报价在线,所以我也可以计算出一定有一个已售出)

有没有简单的方法可以做到这一点? 我尝试过类似的事情

df.groupby(['date'])["offer-id"].agg({'nunique'})

但他们缺少“与之前的比较”时间步长组件。

python pandas group-by comparison
1个回答
0
投票

您可以聚合为

set
:

offers = df.groupby('date', sort=True)['offer-id'].agg(set)

date
2024-02-10       {1, 2, 5}
2024-02-11    {1, 2, 3, 4}
Name: offer-id, dtype: object

然后获得

diff
会给你新的物品:

offers.diff()

date
2024-02-10       NaN
2024-02-11    {3, 4}
Name: offer-id, dtype: object

或已售出的商品:

offers.diff(-1)

date
2024-02-10    {5}
2024-02-11    NaN
Name: offer-id, dtype: object
© www.soinside.com 2019 - 2024. All rights reserved.