拥有如下所示的数据框:
Col1 Col2 Col3
A B C
C D E
F G H
A B C
A H K
A B C
F G H
A B C
我需要找到每个重复的模式,对它进行计数,并在一个额外的列中报告,输出将是:
Col1 Col2 Col3 Count
A B C 4
C D E 1
F G H 2
A B C 4
A H K 1
A B C 4
F G H 2
A B C 4
我的想法是使用原始数据框的大小和使用df.drop_duplicates删除重复项后的大小,但我想知道是否有一个很好的方法?
答案 0 :(得分:0)
使用groupby
和transform
In [4241]: df['Count'] = df.groupby(['Col1', 'Col2', 'Col3'])['Col1'].transform('size')
In [4242]: df
Out[4242]:
Col1 Col2 Col3 Count
0 A B C 4
1 C D E 1
2 F G H 2
3 A B C 4
4 A H K 1
5 A B C 4
6 F G H 2
7 A B C 4
或者,替代使用merge
In [4256]: df.merge(df.groupby(['Col1', 'Col2', 'Col3']).size().reset_index(name='Count'),
how='left')
Out[4256]:
Col1 Col2 Col3 Count
0 A B C 4
1 C D E 1
2 F G H 2
3 A B C 4
4 A H K 1
5 A B C 4
6 F G H 2
7 A B C 4