Получить количество значений в столбце с иерархическими данными в pandas - PullRequest
0 голосов
/ 18 июня 2020

У меня есть фрейм данных, который выглядит следующим образом:

    Category    Shuffled        Name     Sequence    Length
0        pgm           0    protein1         IAAI         4
1        pgm           0    protein2         PGGP         4
2        pgm           0    protein3         KIIK         4
3        pgm           0    protein4         PGGP         4
4        btn           0    protein1         ABBA         4
5        btn           0    protein2         IAAI         4
6        btn           0    protein3         ABBA         4
7        btn           0    protein4         PGGP         4
8        pgm           1    protein1         IAAI         4
9        pgm           1    protein2         PGGP         4
10       pgm           1    protein3         KIIK         4
11       pgm           1    protein4         PGGP         4
12       btn           1    protein1         ABBA         4
13       btn           1    protein2         IAAI         4
14       btn           1    protein3         ABBA         4
15       btn           1    protein4         PGGP         4

Я хочу подсчитать количество появлений Sequence в каждой группе Category / Shuffled и добавить его как новый столбец . Результирующие данные должны выглядеть так:

    Category    Shuffled        Name     Sequence    Length    Sequence_count
0        pgm           0    protein1         IAAI         4                 1
1        pgm           0    protein2         PGGP         4                 2
2        pgm           0    protein3         KIIK         4                 1
3        pgm           0    protein4         PGGP         4                 2
4        btn           0    protein1         ABBA         4                 2
5        btn           0    protein2         IAAI         4                 1
6        btn           0    protein3         ABBA         4                 2
7        btn           0    protein4         PGGP         4                 1
8        pgm           1    protein1         IAAI         4                 1
9        pgm           1    protein2         PGGP         4                 2
10       pgm           1    protein3         KIIK         4                 1
11       pgm           1    protein4         PGGP         4                 2
12       btn           1    protein1         ABBA         4                 2
13       btn           1    protein2         IAAI         4                 1
14       btn           1    protein3         ABBA         4                 2
15       btn           1    protein4         PGGP         4                 1

То, что я пробовал до сих пор, что работает, это

counts = df.groupby(['Category', 'Shuffled'])['Sequence'].value_counts()

, что дает мне

Category    Shuffled    Sequence
pgm         0           PGGP        2
                        IAAI        1
                        KIIK        1
            1           PGGP        2
                        IAAI        1
                        KIIK        1
btn         0           ABBA        2
                        IAAI        1
                        PGGP        1
            1           ABBA        2
                        IAAI        1
                        PGGP        1

Это значения, которые я хочу, но как мне получить их в отдельной строке в исходном фрейме данных?

1 Ответ

1 голос
/ 19 июня 2020

Можно сделать

df['Sequence_count'] = df.groupby(['Category', 'Shuffled','Sequence'])['Sequence'].transform('count')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...