如何找出数据框中的冗余行数,并将此数字作为单独的列报告

时间:2017-10-19 06:58:30

标签: 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     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删除重复项后的大小,但我想知道是否有一个很好的方法?

1 个答案:

答案 0 :(得分:0)

使用groupbytransform

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