我是机器学习的新手,我不知道如何执行以下任务:我需要减去属于同一列的两个后续行,但前提是“ ID”列的值相同且这些行的“年”列值是连续的。
该表的示例:
ID Year Revenues
0 180310781 2008 1730.119
1 180310781 2009 1710.073
2 180310781 2010 1653.428
3 180310781 2011 1608.061
4 180310781 2012 1350.84
12 756460796 2008 1061.78
13 756460796 2009 1045.337
14 756460796 2010 0
15 756460796 2011 675.333
16 756460796 2012 671.717
期望的结果是在新的列中显示第一行为0(或Nan,我不在乎),因为它是观察的第一年,而第二行的结果为1710.073-1730.119,依此类推,直到ID等于累。
最佳答案
df['Diff'] = df.groupby('ID', group_keys=False) \
.apply(lambda x: x['Revenues'].diff())
产出
ID Year Revenues Diff
0 180310781 2008 1730.119 NaN
1 180310781 2009 1710.073 -20.046
2 180310781 2010 1653.428 -56.645
3 180310781 2011 1608.061 -45.367
4 180310781 2012 1350.840 -257.221
5 756460796 2008 1061.780 NaN
6 756460796 2009 1045.337 -16.443
7 756460796 2010 0.000 -1045.337
8 756460796 2011 675.333 675.333
9 756460796 2012 671.717 -3.616