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,计数不会减少。谢谢你的帮助!
我认为这可以满足您的要求:
unique_count = df.drop_duplicates().groupby('id').cumcount() + 1
unique_count.reindex(df.index).ffill()
Run Code Online (Sandbox Code Playgroud)
这+1是因为计数从零开始。这仅在数据框按 排序时才有效id。这是故意的吗?你总是可以预先排序。
您可以在此处找到 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)