首页 > 解决方案 > 如何使用由几列组成的唯一键进行计数?

问题描述

在 python3 和 pandas 我有这个数据框:

autores_naodeputados.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 0 entries
Data columns (total 19 columns):
IdAutor             0 non-null object
IdDocumento         0 non-null object
NomeAutor           0 non-null object
codigo_unico        0 non-null object
nome_deputado       0 non-null object
uf                  0 non-null object
nome_completo       0 non-null object
sequencial          0 non-null object
cpf                 0 non-null object
nome_urna           0 non-null object
partido_eleicao     0 non-null object
situacao            0 non-null object
AnoLegislativo      0 non-null object
CodOriginalidade    0 non-null object
DtEntradaSistema    0 non-null datetime64[ns]
DtPublicacao        0 non-null datetime64[ns]
Ementa              0 non-null object
IdNatureza          0 non-null object
NroLegislativo      0 non-null object
dtypes: datetime64[ns](2), object(17)
memory usage: 0.0+ bytes

它是一个关于立法项目作者身份的数据库。“NomeAutor”列是政治家的名字。

“NroLegislativo”列是项目在当年收到的序号。

“CodOriginalidade”列有其他给定的顺序代码,而不是所有项目类型。

“IdNatureza”列是指示流程类型(法律、修正案等)的代码。

“AnoLegislativo”栏是项目提交的年份。

随着这四个领域的联合(NroLegislativo、CodOriginalidade、IdNatureza、AnoLegislativo),我有一个独特的密钥来区分每个政治名称中的项目。

有没有办法计算每个政客有多少个独特的钥匙?所以,要知道每个人有多少项目。

-/-

行示例如下所示:

autores_projetos[['NomeAutor', 'NroLegislativo', 'CodOriginalidade', 'IdNatureza', 'AnoLegislativo']].head(5).to_dict()
{'NomeAutor': {0: 'Vaz de Lima',
  1: 'Edmir Chedid',
  2: 'Roberto Engler',
  3: 'Campos Machado',
  4: 'Célia Leão'},
 'NroLegislativo': {0: '9', 1: '9', 2: '9', 3: '9', 4: '9'},
 'CodOriginalidade': {0: nan, 1: nan, 2: nan, 3: nan, 4: nan},
 'IdNatureza': {0: '5', 1: '5', 2: '5', 3: '5', 4: '5'},
 'AnoLegislativo': {0: '2015', 1: '2015', 2: '2015', 3: '2015', 4: '2015'}}

我需要知道类似的东西:

NomeAutor
Gil Lancaster            386
Itamar Borges            200
Campos Machado           189
Carlos Giannazi          189
Cezinha de Madureira     165
Afonso Lobato            152
Mauro Bragato            149
...

来源是一个groupby:

autores_deputados.groupby("NomeAutor").NroLegislativo.count().sort_values(ascending=False)

但正如我上面所说,在我的情况下,唯一键由许多字段组成

标签: pythonpandas

解决方案


推荐阅读