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

У меня есть фрейм данных следующей формы:

+--------+--------+--------+
|  Col1  |  Col2  |  Col3  |
+--------+--------+--------+
|  1     |   2    |    1   |
+--------+--------+--------+
|  1     |   2    |    1   |
+--------+--------+--------+
|  1     |   3    |    1   |
+--------+--------+--------+
|  2     |   4    |    1   |
+--------+--------+--------+ 

Я хочу получить следующий фрейм данных:

+--------+--------+--------+--------+
|  Col1  |  Col2  |  Col3  |  Count |
+--------+--------+--------+--------+
|  1     |   2    |    1   |   2    |
+--------+--------+--------+--------+
|  1     |   2    |    1   |   2    |
+--------+--------+--------+--------+
|  1     |   3    |    1   |   1    |
+--------+--------+--------+--------+
|  2     |   4    |    1   |   1    |
+--------+--------+--------+--------+

Как я могу получить этот фрейм данных? Я пытаюсь с методом size () после группировки по фрейму данных, но этот результат не то, что я хотел бы. Я хотел бы получить другой столбец, в котором отображается число вхождений полной строки.

1 Ответ

0 голосов
/ 03 октября 2019

Используйте GroupBy.transform, чтобы получить вектор равной длины и присвоить ему новый столбец:

df['Count'] = df.groupby(df.columns.tolist())['Col1'].transform('size')

Выход

   Col1  Col2  Col3  Count
0     1     2     1      2
1     1     2     1      2
2     1     3     1      1
3     2     4     1      1
...