如何使用sum和count生成groupby?

2024-04-20 05:33:34 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python3和pandas中,我有一个数据帧:

import pandas as pd
emendas_exec_geral = pd.read_csv("emendas_geral_autores.csv",sep=',',encoding = 'utf-8')

emendas_exec_geral.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 43732 entries, 0 to 43731
Data columns (total 10 columns):
Autor               43732 non-null object
Emenda              43732 non-null object
UO_Ajustada         43732 non-null object
Funcional           43732 non-null object
Acao_e_Subtitulo    43732 non-null object
Valor_aprovado      43732 non-null float64
Empenhado           43732 non-null float64
Depesa_Executada    43732 non-null float64
Pago                43732 non-null float64
ano_execucao        43732 non-null int64
dtypes: float64(4), int64(1), object(5)
memory usage: 3.3+ MB

# I only select 2015
ano2015 = emendas_exec_geral[(emendas_exec_geral['ano_execucao'] == 2015)]

# I make a groupby in "UO_Ajustada" and make a sum in column "Empenhado"
ano2015.groupby("UO_Ajustada").Empenhado.sum().reset_index()
UO_Ajustada     Empenhado
0   COLÉGIO PEDRO II    899170.00
1   COMANDO DA AERONÁUTICA - ADMINISTRAÇÃO DIRETA   2342837.63
2   COMANDO DA MARINHA - ADMINISTRAÇÃO DIRETA   3429526.71
3   COMANDO DO EXÉRCITO - ADMINISTRAÇÃO DIRETA  6243558.10
4   COMPANHIA DE DESENVOLVIMENTO DOS VALES DO SÃO ...   70147265.05
5   COMPLEXO HOSPITALAR E DE SAÚDE DA UNIVERSIDADE...   190000.00
6   COMPLEXO HOSPITALAR E DE SAÚDE DA UNIVERSIDADE...   1297216.90
7   COMPLEXO HOSPITALAR E DE SAÚDE DA UNIVERSIDADE...   0.00
8   CONSELHO NACIONAL DE DESENVOLVIMENTO CIENTÍFIC...   1502789.00
9   CONSELHO NACIONAL DE JUSTIÇA    0.00
10  DEFENSORIA PÚBLICA DA UNIÃO - DPU   500000.00
...

df = ano2015.groupby("UO_Ajustada").Empenhado.sum().reset_index()
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 175 entries, 0 to 174
Data columns (total 2 columns):
UO_Ajustada    175 non-null object
Empenhado      175 non-null float64
dtypes: float64(1), object(1)
memory usage: 2.8+ KB

但我想在这个新的数据框中再增加一列:在“UO\u Ajustada”中出现“Empenhado”的次数Empenhado.count计数()-一个名为“计数”的列

请问,有没有办法直接在groupby的指挥下做到这一点?你知道吗


Tags: columnspandasobjectdenulldaexecgroupby
2条回答

希望你的目标是:

ano2015.groupby("UO_Ajustada").agg({'Empenhado': {'Empenhado': np.sum},
                                    'UO_Ajustada': {'Counting': lambda x: ('Empenhado' in x).sum()}})

带有列表的简单agg函数

ano2015.groupby("UO_Ajustada").Empenhado.agg(['sum','count'])

相关问题 更多 >