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')