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

2024-10-04 09:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧(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唯一值的累计数量,因此类似于

^{pr2}$

我试过:

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

但这只是让cumniqueids充满了NaN。在

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


Tags: 数据df数量bynantempid2groupby
2条回答

通过使用category

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

分配回来后

^{pr2}$

您可以使用groupby()+transform()+^{}

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

相关问题 更多 >