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

2024-04-19 17:01:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个简单计算的结果附加到一个数据帧中。我想按年份分组,然后计算收入减去税收,得到一组新的记录,称为净收入。你知道吗

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

我的实际数据有更多的标题,即原产地,产品,国家,项目,月份,价值

我将需要支点,以便它的来源,产品,国家,月份分组。然后将项和值作为值抛出到列。你知道吗


Tags: 数据datanet产品value国家itemyear
1条回答
网友
1楼 · 发布于 2024-04-19 17:01:04

你可以试试旋转:

#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

相关问题 更多 >