В pandas / numpy как создать сводную таблицу с количеством строковых элементов?

1

В python3 и pandas у меня есть этот dataframe:

df_selecao_atual.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 63 entries, 2 to 72
Data columns (total 24 columns):
nome                     63 non-null object
nome_completo            63 non-null object
partido                  63 non-null object
uf                       63 non-null object
cargo_parlamentar        63 non-null object
tipo                     63 non-null object
classe                   63 non-null object
numero                   63 non-null object
único                    63 non-null object
assunto                  63 non-null object
data_inicial             63 non-null object
data_final               63 non-null object
andamento                63 non-null object
link                     63 non-null object
transparencia            63 non-null object
conferencia              63 non-null object
data_conferencia         63 non-null object
resumo                   62 non-null object
observacao               60 non-null object
link_noticia_tribunal    22 non-null object
interessa                62 non-null object
ministro_relator         63 non-null object
processo_conectado       20 non-null object
situacao                 63 non-null object
dtypes: object(24)
memory usage: 12.3+ KB

В столбце "nomes" есть имена людей. У столбца "типос" есть типы процессов, которые у этих людей есть - "INQ" или "AP",

Я сделал сводную таблицу, чтобы подсчитать, сколько типов процессов у каждого есть:

df_selecao_atual.pivot_table('tipo','nome',aggfunc='count').fillna(0).astype(int)

                tipo
nome    
ARTHUR LIRA     10
BENEDITO DE LIRA    3
CÉSAR MESSIAS   2
CÍCERO ALMEIDA  4
FERNANDO COLLOR     12
FLAVIANO MELO   4
GLADSON CAMELI  3
JORGE VIANA     5
MARX BELTRÃO    1
MAURÍCIO QUINTELLA LESSA    1
PAULÃO  2
RENAN CALHEIROS     3
ROCHA   1
RONALDO LESSA   3
SIBÁ MACHADO    1
SÉRGIO PETECÃO  8

Но результат просто подсчитывает, сколько строк в столбце "tipo"

Я ищу такой результат:

ARTHUR LIRA     
    INQ 9
    AP 1
BENEDITO DE LIRA
    INQ 3 
    AP 0
CÉSAR MESSIAS   
    INQ 1
    AP 1
...

То есть подсчитайте количество типов "INQ" и "AP" в каждом имени

Пожалуйста, кто-нибудь знает, как я могу это сделать?

Пример данных:

df_selecao_atual[['nome','tipo']]
nome    tipo
2   CÉSAR MESSIAS   INQ
3   CÉSAR MESSIAS   AP
4   FLAVIANO MELO   INQ
5   FLAVIANO MELO   INQ
6   FLAVIANO MELO   AP
7   FLAVIANO MELO   INQ
10  ROCHA   AP
13  SIBÁ MACHADO    INQ
14  GLADSON CAMELI  INQ
15  GLADSON CAMELI  INQ
16  GLADSON CAMELI  INQ
17  JORGE VIANA     INQ
18  JORGE VIANA     INQ
19  JORGE VIANA     INQ
20  JORGE VIANA     INQ
21  JORGE VIANA     INQ
22  SÉRGIO PETECÃO  INQ
23  SÉRGIO PETECÃO  INQ
...
  • 1
    Можете ли вы добавить образец данных?
Теги:
pandas
numpy
pivot-table

1 ответ

1
Лучший ответ

Ты можешь использовать:

df_selecao_atual.pivot_table(index=['tipo','nome'],aggfunc='size')

Или же:

df_selecao_atual.groupby(['tipo','nome']).size()
  • 0
    Большое спасибо. Можно ли заказать? По именам «ном»
  • 1
    @ReinaldoChaves - конечно, только добавьте .sort_index(level=['nome'])

Ещё вопросы

Сообщество Overcoder
Наверх
Меню