熊猫:从数据透视表中的另一列中减去一列

Posted

技术标签:

【中文标题】熊猫:从数据透视表中的另一列中减去一列【英文标题】:Pandas: subtract one column from another in a pivot table 【发布时间】:2017-09-01 07:09:11 【问题描述】:

我想从数据透视表中的另一列中减去一列。 'diff' 应该是 2017 年和 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']

【问题讨论】:

【参考方案1】:

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

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:

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

【讨论】:

以上是关于熊猫:从数据透视表中的另一列中减去一列的主要内容,如果未能解决你的问题,请参考以下文章

透视列以填充另一列中的值

Eloquent Api 资源:显示数据透视表中的一列

Excle数据透视如何创建多条件汇总的数据透视表

比较两个列并从同一个表中的另一列获取数据

Oracle SQL 数据透视表从一列变为两列

转换后将数据从一列复制到同一表中的另一列