Панды: вычесть один столбец из другого в сводной таблице

Я хотел бы вычесть один столбец из другого в сводной таблице. «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']

person progster    schedule 06.04.2017    source источник


Ответы (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
person jezrael    schedule 06.04.2017