假设我有DF
DF1:
IDField | Frame | Order
--------|-------|------
20 | 10_01 | 0
20 | 10_01 | 0
20 | 10_01 | 1
20 | 10_02 | 2
5 | 02_01 | 0
5 | 02_01 | 1
我想找出IDField
20
中的Frame
10_01
在Order
中有多少次重复。在此示例中,Order
被重复一次。我不关心任何不重复的事物。我希望最终输出看起来像这样:
DF2:
IDField | Frame | Order | Duplicates
--------|-------|-------|-----------
20 | 10_01 | 0 | 1
我尝试按以下方式进行分组和计数:
df2 = df1.groupby(['IDField', 'Frame', 'Order']).size().reset_index(name='Duplicates')
虽然这确实给了我一个重复的计数,但它给了我所有的计数,而不仅仅是重复。有没有一种优雅的方法可以做到这一点?还是我必须创建一个dataframe
并随后对其进行处理?
答案 0 :(得分:2)
您需要使用duplicated
进行初始过滤,然后才能对各列进行分组并计算size
:
c = ['IDField', 'Frame', 'Order']
df[df.duplicated(c)].groupby(c).size().reset_index(name='Duplicates')
IDField Frame Order Duplicates
0 20 10_01 0 1
c = ['IDField', 'Order']
df[df.duplicated(c)].groupby(c).size().reset_index(name='Duplicates')
IDField Order Duplicates
0 20 0 1