查找熊猫中每个唯一 ID 的先前计数出现的总和

Posted

技术标签:

【中文标题】查找熊猫中每个唯一 ID 的先前计数出现的总和【英文标题】:Find the sum of previous count occurrences per unique ID in pandas 【发布时间】:2019-05-04 14:12:01 【问题描述】:

我有客户 ID 和购买 ID 的历史记录,其中没有客户购买过相同的产品。但是,对于每个购买 ID(这是唯一的),我如何才能找出客户之前购买的次数

我尝试过使用 groupby() 和 sort_values()

df = pd.DataFrame('id_cust': [1,2,1,3,2,4,1],                   
                  'id_purchase': ['20A','143C','99B','78R','309D','90J','78J'])
df.sort_values(by='id_cust')
df.groupby('id_cust')['id_purchase'].cumcount()

这是我所期望的:

  id_cust   id_purchase value
  1              20A        1
  2              143C       1
  1              99B        2
  3              78R        1
  2              3097D      2
  4              900J       1
  1              78J        3

【问题讨论】:

【参考方案1】:

您可以只在id_cust 列上使用cumcount(),因为id_purchase 是唯一的:

df['value']=df.groupby('id_cust')['id_cust'].cumcount()+1
print(df)

   id_cust id_purchase  value
0        1         20A      1
1        2        143C      1
2        1         99B      2
3        3         78R      1
4        2        309D      2
5        4         90J      1
6        1         78J      3

【讨论】:

以上是关于查找熊猫中每个唯一 ID 的先前计数出现的总和的主要内容,如果未能解决你的问题,请参考以下文章

如何有效地计算熊猫时间序列中的滚动唯一计数?

XSLT 2.0 如何对每个唯一项目 id 的计数求和

在唯一列值的熊猫上应用计数器[重复]

随着时间的推移,使用熊猫计算滚动窗口中唯一 id 的特定条件事件的数量

当日期不唯一时,在熊猫中按日期分组后计数观察值

熊猫数据框列的分组和计数