Python 不同列中每个id的唯一字符串的累积计数
我有一个数据帧(df_temp),如下所示: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
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.