如何在DataFrame中将制作的数据透视表转换为Pandas / Numpy?

时间:2018-07-26 22:38:08

标签: python pandas numpy dataframe pivot-table

在python3和pandas中,我具有以下数据框:

despesas_atuais_final.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 82318 entries, 0 to 82317
Data columns (total 18 columns):
Ano                     82318 non-null object
CNPJ                    82318 non-null object
Deputado                82318 non-null object
Fornecedor              82318 non-null object
Matricula               82318 non-null int64
Mes                     82318 non-null int64
Tipo                    82318 non-null object
Valor                   82318 non-null float64
cnpj_raiz_fornecedor    82318 non-null object
codigo_unico            82318 non-null object
nome_deputado           82318 non-null object
uf                      82318 non-null object
nome_completo           82318 non-null object
sequencial              82318 non-null object
cpf                     82318 non-null object
nome_urna               82318 non-null object
partido_eleicao         82318 non-null object
situacao                82318 non-null object
dtypes: float64(1), int64(2), object(15)
memory usage: 11.9+ MB

“ Valor”列是费用值。 “ nome_deputado”列中列出了进行支出的人员的姓名。 “ Ano”是支出的年份。 “ Mes”是支出的月份,以数字表示。

我制作了数据透视表以了解每个人每年的每月支出:

pd.pivot_table(despesas_atuais_final,index=["nome_deputado","Ano", "Mes"], values=["Valor"], aggfunc=np.sum)

                                Valor
nome_deputado   Ano     Mes     
ABELARDO CAMARINHA  2015    3   3,345.40
4   4,843.97
5   15,738.48
6   18,245.08
7   23,953.70
8   27,587.43
9   27,058.59
10  24,117.43
11  20,984.07
2016    2   12,008.00
3   28,415.86
4   24,187.94
5   27,776.08
6   26,755.00
7   26,478.03
8   29,930.60

...

请问有一种方法可以将此数据透视表转换为数据框?像这样:

nome_deputado       Ano     Mes     Valor
ABELARDO CAMARINHA  2015    3   3,345.40
ABELARDO CAMARINHA  2015    4   4,843.97
ABELARDO CAMARINHA  2015    5   15,738.48
...

1 个答案:

答案 0 :(得分:1)

您可以将对象包装在DataFrame函数中

pd.DataFrame(pd.pivot_table(despesas_atuais_final,index=["nome_deputado","Ano", "Mes"], values=["Valor"], aggfunc=np.sum))