2017-05-30 92 views
0

我有以下几点:计算年同比变化熊猫

data = pd.DataFrame({'ID' : (1,2,1,2,1,2), 
      'year': (1,1,2,2,3,3), 
      'total_change' : (2,1,7,4,14,6)}) 

我想计算每行的绝对上年同期变动,因此这需要从以前减去本年度。年(为total_change变量

我所要的输出如下所示,在那里我有标记输出列annual_change:

output = pd.DataFrame({'ID' : (1,2,1,2,1,2), 
      'year': (1,1,2,2,3,3), 
      'total_change' : (2,1,7,4,14,6), 
      'annual_change' : (2,1,5,3,7,2)}) 
+0

需要'diff'? 'data.groupby( 'ID')。total_change.diff()' – Psidom

回答

1
output = data.assign(annual_change=data.groupby("ID")['total_change'].apply(lambda x:x.diff().fillna(x))) 

输出:

ID total_change year annual_change 
0 1    2  1   2.0 
1 2    1  1   1.0 
2 1    7  2   5.0 
3 2    4  2   3.0 
4 1   14  3   7.0 
5 2    6  3   2.0