Python 数据帧的唯一元素的累积数量
我有一个熊猫数据框Python 数据帧的唯一元素的累积数量,python,pandas,unique,Python,Pandas,Unique,我有一个熊猫数据框 id tag 1 A 1 A 1 B 1 C 1 A 2 B 2 C 2 B 我想添加一列,计算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 对于给定的id,计数将是非递减的。谢谢你的帮助 我想这正是你想要的: unique_count = df.drop_duplicates()
id tag
1 A
1 A
1 B
1 C
1 A
2 B
2 C
2 B
我想添加一列,计算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
对于给定的id,计数将是非递减的。谢谢你的帮助 我想这正是你想要的:
unique_count = df.drop_duplicates().groupby('id').cumcount() + 1
unique_count.reindex(df.index).ffill()
+1
是因为计数从零开始。这仅在数据帧按id
排序时有效。这是有意的吗?你可以事先分类 这个怎么样:
d['X'] = 1
d.groupby("Col").X.cumsum()
您可以在R和Python中找到其他一些方法
请参阅我的编辑。只有按
id
idt=[1,1,1,1,1,2,2,2]
tag=['A','A','B','C','A','B','C','B']
df=pd.DataFrame(tag,index=idt,columns=['tag'])
df=df.reset_index()
print(df)
index tag
0 1 A
1 1 A
2 1 B
3 1 C
4 1 A
5 2 B
6 2 C
7 2 B
df['uCnt']=df.groupby(['index','tag']).cumcount()+1
print(df)
index tag uCnt
0 1 A 1
1 1 A 2
2 1 B 1
3 1 C 1
4 1 A 3
5 2 B 1
6 2 C 1
7 2 B 2
df['uCnt']=df['uCnt']//df['uCnt']**2
print(df)
index tag uCnt
0 1 A 1
1 1 A 0
2 1 B 1
3 1 C 1
4 1 A 0
5 2 B 1
6 2 C 1
7 2 B 0
df['uCnt']=df.groupby(['index'])['uCnt'].cumsum()
print(df)
index tag uCnt
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
df=df.set_index('index')
print(df)
tag uCnt
index
1 A 1
1 A 1
1 B 2
1 C 3
1 A 3
2 B 1
2 C 2
2 B 2
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