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

Python 不同列中每个id的唯一字符串的累积计数,python,pandas,Python,Pandas,我有一个数据帧(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

我有一个数据帧(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


不知道我做错了什么!非常感谢任何帮助

使用
类别

df.groupby(['ID1']).ID2.apply(lambda x : x.astype('category').cat.codes.add(1))
Out[551]: 
0    1
1    1
2    2
3    2
4    3
5    1
6    1
Name: ID2, dtype: int8
在把它分配回来之后

df['CumUniqueIDs']=df.groupby(['ID1']).ID2.apply(lambda x : x.astype('category').cat.codes.add(1))
df
Out[553]: 
  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

通过使用
类别

df.groupby(['ID1']).ID2.apply(lambda x : x.astype('category').cat.codes.add(1))
Out[551]: 
0    1
1    1
2    2
3    2
4    3
5    1
6    1
Name: ID2, dtype: int8
在把它分配回来之后

df['CumUniqueIDs']=df.groupby(['ID1']).ID2.apply(lambda x : x.astype('category').cat.codes.add(1))
df
Out[553]: 
  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
您可以使用
groupby()
+
transform()
+:

您可以使用
groupby()
+
transform()
+:


我又一次快速地伸出手指。回答得好+一次又一次,我的手指飞快地伸出来。回答得好+1.