在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_Ajustada”中出现的“Empenhado” - Empenhado.count() - 一个名为“Counting”的列
请问,有没有办法直接在groupby的命令下执行此操作?
答案 0 :(得分:2)
带列表的简单DT
函数
agg
答案 1 :(得分:1)
希望你的目标是:
ano2015.groupby("UO_Ajustada").agg({'Empenhado': {'Empenhado': np.sum},
'UO_Ajustada': {'Counting': lambda x: ('Empenhado' in x).sum()}})