Skip to main content
 首页 » 编程设计

python之添加条件计数器 : counter column based on value of other columns

2025年05月04日12cloudgamer

我有一张这样的 table

id    id2      val 
a     red      apple 
a     red      orange 
b     blue     fish 
c     violet   beef 
a     yellow   banana 
a     black    pork 

我想根据 id 和 id2 的值创建一个计数器。

例如id为客户id,id2为订单id,val为订单中的商品名称。我想为客户 ID 和订单 ID 创建一个计数器。所以这就是为什么前两行应该有相同的计数器 1

我试过 cumcount 但他们会给我这样的东西

id    id2      val      counter 
a     red      apple    1 
a     red      orange   2 
b     blue     fish     1 
c     violet   beef     1 
a     yellow   banana   1 
a     black    pork     1 

我尝试了 cumcount

df['counter'] = df.groupby(['id','id2']).cumcount() + 1

但这不是我想要的

我想要这样的结果表

id    id2      val      counter 
a     red      apple    1 
a     red      orange   1 
b     blue     fish     1 
c     violet   beef     1 
a     yellow   banana   2 
a     black    pork     3 

谢谢,

请您参考如下方法:

看起来您正在尝试计算对 (id, id2) 的唯一值:

uniques = df.drop_duplicates(subset=['id','id2']).groupby('id').cumcount()+1 
df['counter'] = uniques.reindex(df.index).ffill().astype(int)