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