如何将计算应用于数据框中的groupby行并将结果附加到数据框的底部?

时间:2016-04-19 15:31:18

标签: python pandas group-by append

我试图在数据框中附加简单计算的结果。我想分组年份,然后计算减税收入,以获得一组名为净收入的新记录。



import pandas as pd


data = {'year': [2010, 2011, 2012, 2011, 2012, 2010],
        'item': ['Revenue', 'Revenue', 'Revenue', 'Tax', 'Tax', 'Tax'],
        'value': [11, 8, 10, 3, 2, 3]}
dfRev = pd.DataFrame(data, columns=['year', 'item', 'value'])

print dfRev




   year     item  value
0  2010  Revenue     11
1  2011  Revenue      8
2  2012  Revenue     10
3  2011      Tax      3
4  2012      Tax      2
5  2010      Tax      3

我想像这样添加到底部。

   year     item  value
0  2010  Revenue     11
1  2011  Revenue      8
2  2012  Revenue     10
3  2011      Tax      3
4  2012      Tax      2
5  2010      Tax      3
6  2010 Net Revenue   8
7  2011 Net Revenue   5
8  2012 Net Revenue   7

我的实际数据有更多标题ieORIGIN,Product,Country,item,Month,Value

我需要进行透视,以便按ORIGIN,Product,Country,Month进行分组。然后将项目抛出到列,将值作为值抛出。

1 个答案:

答案 0 :(得分:1)

你可以尝试一个支点:

#reshape so now you have a col for Tax and a col for Revenue
pivot = dfRev.pivot('year', 'item', 'value')
#perform the calculation
pivot.loc[:, 'Net Revenue'] = pivot.Revenue - pivot.Tax
#and then bring it back to the original shape
dfRev = pivot.stack().reset_index().sort_values(by='item')

print dfRev
   year         item   0
2  2010  Net Revenue   8
5  2011  Net Revenue   5
8  2012  Net Revenue   8
0  2010      Revenue  11
3  2011      Revenue   8
6  2012      Revenue  10
1  2010          Tax   3
4  2011          Tax   3
7  2012          Tax   2