我有一个数据框(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
Run Code Online (Sandbox Code Playgroud)
我需要添加一列来显示每个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
Run Code Online (Sandbox Code Playgroud)
我试过了:
dfl_temp['CumUniqueIDs'] = dfl_temp.groupby(by=[ID1])[ID2].nunique().cumsum()+1
Run Code Online (Sandbox Code Playgroud)
但这只是用NaN填充CumUniqueID。
不知道我在做什么错!任何帮助,不胜感激!
你可以使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |