熊猫数据框的唯一元素的累积数量

use*_*361 4 python unique pandas

我有一个熊猫数据框

id tag
1  A
1  A
1  B
1  C
1  A
2  B
2  C  
2  B 
Run Code Online (Sandbox Code Playgroud)

我想添加一个列来计算 id 级别的唯一标签的累积数量。更具体地说,我想拥有

id tag count
1  A   1
1  A   1
1  B   2
1  C   3
1  A   3
2  B   1
2  C   2
2  B   2
Run Code Online (Sandbox Code Playgroud)

对于给定的 id,计数不会减少。谢谢你的帮助!

Joe*_*ron 5

我认为这可以满足您的要求:

unique_count = df.drop_duplicates().groupby('id').cumcount() + 1
unique_count.reindex(df.index).ffill()
Run Code Online (Sandbox Code Playgroud)

+1是因为计数从零开始。这仅在数据框按 排序时才有效id。这是故意的吗?你总是可以预先排序。


Bil*_*ros 5

您可以在此处找到 R 和 Python 中的其他一些方法

df = pd.DataFrame({'id':[1,1,1,1,1,2,2,2],'tag':["A","A", "B","C","A","B","C","B"]})

df['count']=df.groupby('id')['tag'].apply(lambda x: (~pd.Series(x).duplicated()).cumsum())

   id tag  count
0   1   A      1
1   1   A      1
2   1   B      2
3   1   C      3
4   1   A      3
5   2   B      1
6   2   C      2
7   2   B      2
Run Code Online (Sandbox Code Playgroud)