pandas :在数据透视表中从另一列中减去一列 [英] Pandas: subtract one column from another in a pivot table

查看:220
本文介绍了 pandas :在数据透视表中从另一列中减去一列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从数据透视表中的另一列中减去一列. "diff"应该是2017年和2016年之间的区别

I would like to subtract one columns from another in a pivot table. 'diff' shoud be the difference between 2017 and 2016

raw_data = {'year': [2016,2016,2017,2017],
    'area': ['A','B','A','B'],
    'age': [10,12,50,52]}
df1 = pd.DataFrame(raw_data, columns = ['year','area','age'])

table=pd.pivot_table(df1,index=['area'],columns=['year'],values['age'],aggfunc='mean')

table['diff']=table['2017']-table['2016']

推荐答案

您需要删除pivot_table中的[],以免在列中创建MultiIndex:

You need remove [] in pivot_table for dont create MultiIndex in columns:

table=pd.pivot_table(df1,index='area',columns='year',values='age',aggfunc='mean')
print (table)
year  2016  2017
area            
A       10    50
B       12    52

table['diff']=table[2017]-table[2016]
print (table)
year  2016  2017  diff
area                  
A       10    50    40
B       12    52    40

另一种可能的解决方案是 droplevel :

Another possible solution is droplevel:

table=pd.pivot_table(df1,index=['area'],columns=['year'],values=['age'],aggfunc='mean')
table.columns = table.columns.droplevel(0)
print (table)
year  2016  2017
area            
A       10    50
B       12    52

这篇关于 pandas :在数据透视表中从另一列中减去一列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆