Python 如何使用sum和count创建groupby?
在Python3和pandas中,我有以下数据帧:Python 如何使用sum和count创建groupby?,python,pandas,group-by,Python,Pandas,Group By,在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 c
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
将熊猫作为pd导入
emendas_exec_geral=pd.read_csv(“emendas_geral_autores.csv”,sep=',,encoding='utf-8')
执行董事和总经理信息()
范围索引:43732个条目,0到43731
数据列(共10列):
自动43732非空对象
Emenda 43732非空对象
UO_Ajustada 43732非空对象
函数43732非空对象
Acao_e_Subtitulo 43732非空对象
Valor_aprovado 43732非空浮点64
Empenhado 43732非空浮点64
Depesa_Executada 43732非空浮点64
第43732页非空浮点64
ano_Executao 43732非空int64
数据类型:float64(4)、int64(1)、object(5)
内存使用率:3.3+MB
#我只选择了2015年
ano2015=执行董事总经理[(执行董事总经理['ano'U execucao']==2015]
#我在“UO_Ajustada”中做了一个groupby,在“Empenhado”列中做了一个合计
ano2015.groupby(“UO_Ajustada”).Empenhado.sum().reset_index()
UO_Ajustada Empenhado
0 COLÉGIO PEDRO II 899170.00
1科曼多航空公司-行政主管2342837.63
2科曼多·达马林哈-行政官切奥·迪雷塔3429526.71
3行政长官行政长官行政长官6243558.10
4德森沃尔维门托山谷酒店。。。70147265.05
5大学附属综合医院。。。190000
6大学附属综合医院。。。1297216.90
7大学附属综合医院。。。0
8国家环境保护委员会。。。1502789
9全国正义协商会议0.00
10联合国防部-DPU 500000.00
...
df=ano2015.groupby(“UO_Ajustada”).Empenhado.sum().reset_index()
df.info()
范围索引:175个条目,0到174
数据列(共2列):
UO_Ajustada 175非空对象
Empenhado 175非空浮点64
数据类型:浮点64(1),对象(1)
内存使用率:2.8+KB
但我想在这个新的数据框架中再包含一列:“UO_Ajustada”中“Empenhado”的出现次数“-Empenhado.count()”——一个名为“Counting”的列
请问,有没有办法直接在groupby的指挥下完成这项工作?希望您的目标是:
ano2015.groupby("UO_Ajustada").agg({'Empenhado': {'Empenhado': np.sum},
'UO_Ajustada': {'Counting': lambda x: ('Empenhado' in x).sum()}})
希望您的目标是:
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'])
带有列表的简单
agg
函数
ano2015.groupby("UO_Ajustada").Empenhado.agg(['sum','count'])
你的和和和新的列计数,有不同的键,我只能考虑合并在一起谢谢。sum()命令作用于“UO_Ajustada”。我要添加的命令Empenhado.count()也将作用于“UO_Ajustada”。这是同一个键,对吗?
ano2015.groupby(“UO_Ajustada”).Empenhado.agg(['sum','count'])
谢谢,你想让我添加一个答案吗?你的和和和新的列计数,有不同的键,我只能在案例中考虑合并谢谢。sum()命令作用于“UO_Ajustada”。我要添加的命令Empenhado.count()也将作用于“UO_Ajustada”。这是同一个键,对吗?ano2015.groupby(“UO_Ajustada”).Empenhado.agg(['sum','count'))
谢谢,你想让我添加它作为答案吗?我还以为它应该是一个过滤器:)+1@zipa如果需要一个过滤器,我会推荐join:-)我还以为它应该是一个过滤器:)+1@zipa如果需要过滤器,我建议加入:-)