Представьте, что у меня есть следующий фрейм данных:
import pandas as pd
df = pd.DataFrame({'col1': ['a','b','c','d','e','f','g','h','i','j','k','l'], 'col2': [1,1,1,2,2,3,3,3,4,5,5,6]})
col1 col2
0 a 1
1 b 1
2 c 1
3 d 2
4 e 2
5 f 3
6 g 3
7 h 3
8 i 4
9 j 5
10 k 5
11 l 6
если я использую этот код:
df[df.col2.isin(df.groupby('col2').size().head(3).index)]
я могу получить 3 наиболее часто встречающиеся категории в col2
.
EDIT :
Что я хотел бы сделать, так это отфильтровать кадр данных таким образом, чтобы в col2
оставались только самые распространенные категории col2
. Затем я хотел бы создать фиктивные столбцы для каждой категории, указывающие, сколько записей одной и той же категории существует для каждой категории и для каждой буквы в col1
.
Это будет результирующий кадр данных:
col1 col2_1 col2_2 col2_3 rest_count
0 a 1 0 0 0
1 b 1 0 0 0
2 c 1 0 0 0
3 d 0 1 0 0
4 e 0 1 0 0
5 f 0 0 1 0
6 g 0 0 1 0
7 h 0 0 1 0
8 i 0 0 0 1
9 j 0 0 0 1
10 k 0 0 0 1
11 l 0 0 0 1
Как сохранить количество оставшихся категорий во вновь созданном столбце rest_count
??
Заранее спасибо