Python 如何找出数据帧中冗余行的数量,并将该数量作为单独的列报告

Python 如何找出数据帧中冗余行的数量,并将该数量作为单独的列报告,python,pandas,Python,Pandas,具有如下所示的数据帧: 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

具有如下所示的数据帧:

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使用原始数据帧的大小和删除副本后的大小,但我想知道是否有一个好方法

使用
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

使用
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

更一般一点:
df.groupby(df.columns.tolist()).Col1.transform('size')
更一般一点:
df.groupby(df.columns.tolist()).Col1.transform('size')