Как подсчитать дубликаты строк в кадре данных с несколькими столбцами целых чисел - PullRequest
1 голос
/ 16 мая 2019

У меня есть вопрос относительно подсчета дубликатов строк в кадре данных. Например, у меня есть следующий фрейм данных.

df1 = 
   0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15
0  2   2   2   2   2   2   2   2   2   2   2    2    2    2    2    2
1  3   3   3   3   3   3   3   3   3   3   3    3    3    3    3    3
2  1   1   1   1   1   1   1   1   1   1   1    1    1    1    1    1
3  1   1   1   1   1   1   1   1   1   1   1    1    1    1    1    1
4  1   1   1   1   1   1   1   1   1   1   1    1    1    1    1    1
5  1   1   1   1   1   1   1   1   1   1   1    1    1    1    1    1
6  2   2   2   2   2   2   2   2   2   2   2    2    2    2    2    2
7  2   2   2   2   2   2   2   2   2   2   2    2    2    2    2    2
8  2   2   2   2   2   2   2   2   2   2   2    2    2    2    2    2
9  3   3   3   3   3   3   3   3   3   3   3    3    3    3    3    3

Есть ли способ подсчета дубликатов и предоставления мне следующего кадра данных?

df1_duplicates =
   0   1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   Count
0  1   1   1   1   1   1   1   1   1   1   1    1    1    1    1    1    4
1  2   2   2   2   2   2   2   2   2   2   2    2    2    2    2    2    4
2  3   3   3   3   3   3   3   3   3   3   3    3    3    3    3    3    2

Я пытался использовать следующий код,

df_duplicates = df1.groupby(df1.columns.tolist()).size().rename(columns={0:'count'})

это дает мне счетчик, но выходной кадр данных становится одним столбцом данных, как показано ниже.

df_I_dont_want_this =
                    0 
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 
1 1 1 1 1 1 1 1 1 1 1  1  1  1  1  1  4
2 2 2 2 2 2 2 2 2 2 2  2  2  2  2  2  4
3 3 3 3 3 3 3 3 3 3 3  3  3  3  3  3  2 

1 Ответ

0 голосов
/ 16 мая 2019

Это то, что вы хотите

df.groupby(df.columns.tolist()).size().to_frame('count').reset_index()
Out[28]: 
   0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  count
0  1  1  1  1  1  1  1  1  1  1   1   1   1   1   1   1      4
1  2  2  2  2  2  2  2  2  2  2   2   2   2   2   2   2      4
2  3  3  3  3  3  3  3  3  3  3   3   3   3   3   3   3      2
...