Skip to main content
 首页 » 编程设计

python之不同列中每个 id 的唯一字符串的累积计数

2025年05月04日19qq号

我有一个数据框 (df_temp),如下所示:

   ID1  ID2 
0  A    X 
1  A    X 
2  A    Y 
3  A    Y 
4  A    Z 
5  B    L 
6  B    L 

我需要的是添加一个列,显示每个 ID1 的 ID2 唯一值的累积数量,例如

   ID1  ID2   CumUniqueIDs 
0  A    X     1 
1  A    X     1 
2  A    Y     2 
3  A    Y     2 
4  A    Z     3 
5  B    L     1 
6  B    L     1 

我试过:

 dfl_temp['CumUniqueIDs'] = dfl_temp.groupby(by=[ID1])[ID2].nunique().cumsum()+1 

但这只是用 NaN 填充 CumUniqueIDs。

不确定我在这里做错了什么!非常感谢任何帮助!

请您参考如下方法:

你可以使用groupby() + transform() + factorize() :

In [12]: df['CumUniqueIDs'] = df.groupby('ID1')['ID2'].transform(lambda x: pd.factorize(x)[0]+1) 
 
In [13]: df 
Out[13]: 
  ID1 ID2  CumUniqueIDs 
0   A   X             1 
1   A   X             1 
2   A   Y             2 
3   A   Y             2 
4   A   Z             3 
5   B   L             1 
6   B   L             1